sendudp
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:1k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. use Socket;
  3. require "getopts.pl";
  4. $sleeptime = .1;
  5. &Getopts("H:p:c:s:");
  6. if($opt_s) { 
  7.     $sleeptime = $opt_s;
  8. }
  9. $hostname = "localhost";
  10. if($opt_H) {
  11. $hostname = $opt_H;
  12. }
  13. $port = "2427";
  14. if($opt_p) {
  15. $port = $opt_p;
  16. }
  17. $sockaddr = "S n a4 x8";($name,$aliases,$proto) = getprotobyname('udp');
  18. chop($local_hostname = `hostname`);
  19. ($name,$aliases,$type,$len,$myaddr) = gethostbyname($local_hostname);
  20. ($name,$aliases,$type,$len,$broadaddr) = gethostbyname($hostname);
  21. $me   = pack($sockaddr,PF_INET, 7000,     $myaddr);
  22. $them = pack($sockaddr,PF_INET, $port, $broadaddr);
  23. socket(S, PF_INET, SOCK_DGRAM, $proto) || die $!;
  24. bind(S, $me) || die $!;
  25. open(F, $ARGV[0]) or die "can't open $ARGV[0] $!";
  26. while(<F>) {
  27.     if($_ =~ /^---- start ----/) {
  28. $msg = "";
  29. $flag = 1;
  30.     } elsif ($_ =~ /^---- end ----/) {
  31. print "$msg";
  32. if($opt_c) {
  33.     $win = '';
  34.     vec($win, fileno(S),1) = 1;
  35.     for($i = 0; $i < $opt_c ; $i++) {
  36. if(select(undef, $wout=$win, undef, undef)) {
  37.     print ".";
  38.     defined(send(S,$msg,0,$them)) || die "failed: $! $?";
  39. } else {
  40.     die "select problem!";
  41. }
  42. # select undef, undef, undef, $sleeptime;
  43.     }
  44. } else {
  45.     send(S,$msg,0,$them) || die $!;
  46. }
  47. $flag = 0;
  48.     } elsif ($flag == 1) {
  49. $msg .= $_;
  50.     }
  51. }
  52. close(F);