虽然大部分代码看不懂,虽然格式很烂,但是等当看到通讯成功时,还是很高兴的
server端程序
[root@rwsoda203db1-vip perl_tidb]# cat perl_tidbvip.pl
#!/usr/bin/perl
use IO::Socket;
use IO::Select;
%srv_info=(
"clt_ip"=>"10.210.80.8",
"clt_port"=>"5277",
"srv_ip"=>"10.210.80.26",
"srv_port"=>"5277",
);
$SIG{INT}=$SIG{TERM}=sub{
$sock->close() or warn "Close Socket failed. $!,$@";
};;
my $cltip=$srv_info{"clt_ip"};
my $cltport=$srv_info{"clt_port"};
my $srvip=$srv_info{"srv_ip"};
my $srvport=$srv_info{"srv_port"};
#print "ccc$srvip\n";
my $sock = IO::Socket::INET->new(
PeerAddr=>"$cltip",
PeerPort=>"$cltport",
LocalAddr=>"$srvip",
LocalPort=>"$srvport",
Type=>SOCK_STREAM,
ReuseAddr=>SO_RESUEADDR,
Proto=>"tcp",
Listen=>20
) or die "cann't create socket connect .$!,$@";
my $sel = IO::Select->new($sock);
while (my @ready = $sel->can_read){
foreach my $fh(@ready){
if ($fh == $sock){
my $new = $sock->accept();
$sel->add($new);
}else{
$len = $fh->recv($buffer,1024,0);
print "$buffer \n";
$fh->send("server ok\n",0);
$fh->autoflush(1);
$sel->remove($fh);
$fh->close();
}
}
}
$sock->close() or warn "cann't close socket. $!,$@\n";
client端程序
[root@rwsoda203db1 perl_tidb]# cat perl_send.pl
#!/usr/bin/perl
use IO::Socket;
use IO::Select;
%srv_info=(
"srv_ip"=>"10.210.80.26",
"srv_port"=>"5277",
);
my $srvip=$srv_info{"srv_ip"};
my $srvport=$srv_info{"srv_port"};
print "srvip:${srvport}\n";
#print "$srv_info{srv_ip}";
my $sock= IO::Socket::INET->new(
PeerAddr=>"$srvip",
PeerPort=>"$srvport",
Type=>SOCK_STREAM,
Proto=>"tcp"
) or die "cann't create socket connect.$@\n";
$sock->send("client ok!\n",0) or warn "send failed! $!,$@";
$sock->autoflush(1);
my $sel = IO::Select->new($sock);
while (my @ready = $sel->can_read){
foreach my $fh(@ready){
if($fh == $sock) {
while(<$fh>){
print $_;
}
$sel->remove($fh);
close $fh;
close FILE;
}
}
}
$sock->close();
通讯成功
[root@rwsoda203db1-vip perl_tidb]# ./perl_tidbvip.pl
client ok!
client ok!
参考了这个