AnnounceCache.pl
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:1k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. #!/usr/local/bin/perl
  2. $|=1;
  3. $host = (shift || 'sd.cache.nlanr.net');
  4. $port = (shift || '3131');
  5. require "$ENV{'HARVEST_HOME'}/lib/socket.ph";
  6. $sockaddr = 'S n a4 x8';
  7. ($name, $aliases, $proto) = getprotobyname("udp");
  8. ($fqdn, $aliases, $type, $len, $themaddr) = gethostbyname($host);
  9. $thissock = pack($sockaddr, &AF_INET, 0, "");
  10. $them = pack($sockaddr, &AF_INET, $port, $themaddr);
  11. chop($me=`uname -a|cut -f2 -d' '`);
  12. $myip=(gethostbyname($me))[4];
  13. die "socket: $!n" unless
  14. socket (SOCK, &AF_INET, &SOCK_DGRAM, $proto);
  15. while (<>) {
  16. chop;
  17. $request_template = 'CCnx4x8x4a4a' . length;
  18. $request = pack($request_template, 1, 1, 24 + length, $myip, $_);
  19. die "send: $!n" unless
  20. send(SOCK, $request, 0, $them);
  21. die "recv: $!n" unless
  22. recv(SOCK, $reply, 1024, 0);
  23. ($type,$ver,$len,$payload) = unpack('CCnx4x8x4A', $reply);
  24. print $CODES[$type] . " $_n";
  25. }