服务端:
use IO::Socket::INET; use Data::Dumper; use Storable; my $server_port=7899; my $server = IO::Socket::INET->new(LocalPort => $server_port, Type => SOCK_STREAM, Reuse => 1, Listen => 10) # 或者 SOMAXCONN or die "Couldn't be a tcp server on port $server_port: $!\n"; print "Server has Start\n"; while(1) { my $client = $server->accept(); while(<$client>) { print; chomp; $client->send("Server received is: '$_'\n"); } print "Client $$ exit at ".localtime()."\n"; close($client); }
客户端程序:
use IO::Socket::INET; use Data::Dumper; my $remote_host='localhost'; my $remote_port=7899; my $socket = IO::Socket::INET->new(PeerAddr => $remote_host, PeerPort => $remote_port, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $remote_host:$remote_port: $!\n"; while(1) { my $data = eval { local $SIG{ALRM}=sub {die "timeout\n";}; alarm(10); print "please input the number select the thing you want\n"; my $data = <STDIN>; return $data; }; alarm(0); &HeartBreak($socket); my $return; $socket->recv($return,1024,0); print "return : $return"; last if($return =~ m/quit/); } close($socket); #心跳任务 sub HeartBreak { my $socket = shift; print $socket localtime()."HeartBeat\n"; }