⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpserver.pl

📁 实现在电脑平台上控制短信modem或手机进行通讯的jar包和相关实例
💻 PL
字号:
#!/opt/perl5/bin/perl -wuse strict;use Socket;use IO::Socket;use Sys::Hostname;main();exit(0);sub main(){    my $MAX_MSG_SIZE = 16384; # 16KBytes should be enough...    my $svrport = 8300;    my $svriaddr = gethostbyname(hostname());    my $svrproto = getprotobyname('udp');    my $svrpaddr = sockaddr_in($svrport, $svriaddr);    socket(SOCKET, PF_INET, SOCK_DGRAM, $svrproto)   || die "socket: $!";    bind(SOCKET, $svrpaddr)                          || die "bind: $!";    my $rin = '';    vec($rin, fileno(SOCKET), 1) = 1;    # timeout after 10.0 seconds    # at some time, I'm going to add signal handlers so that signals can be    # sent to cause logfile rollover, or tidy exit...then the timeout will    # come in useful..    my $exit = 0;    while (!$exit)    {        my $rout = $rin;        # select(readvec, writevec, exceptionvec, timeout)        # : returns # of selected filehandles, modifies        #   vector parameters so that set bits indicate        #   filehandles which are readable, writable or have        #   an exception state        my $nSelected = select($rout, undef, undef, 10.0);        if ($nSelected == 0)        {          # timedout : go back to start of loop          next;        }        my $msgData = '';        my $clientpaddr = recv(SOCKET, $msgData, $MAX_MSG_SIZE, 0);        if (!$clientpaddr)        {          die "recv: $!";        }        my ($clientport, $clientiaddr) = sockaddr_in($clientpaddr);        my $clienthost = gethostbyaddr($clientiaddr, AF_INET);        if (!$clienthost)        {          # unable to determine name for client : show raw ip address          $clienthost = inet_ntoa($clientiaddr);        }        print "$clienthost:$msgData\n";    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -