perl – 在发送数据之前检查套接字是否已连接
发布时间:2020-12-15 21:48:44 所属栏目:大数据 来源:网络整理
导读:我在perl中使用套接字连接编写一个简单的代码: $sock = new IO::Socket::INET( PeerAddr = '192.168.10.7',PeerPort = 8000,Proto = 'tcp');$sock or die "no socket :$!"; 然后使用循环发送数据: while...print $sock $str;...loop 有没有办法在循环中插
|
我在perl中使用套接字连接编写一个简单的代码:
$sock = new IO::Socket::INET(
PeerAddr => '192.168.10.7',PeerPort => 8000,Proto => 'tcp');
$sock or die "no socket :$!";
然后使用循环发送数据: while... print $sock $str; ...loop 有没有办法在循环中插入一个命令来检查连接? while... socket is up? yes => send data no => connect again and the continue with loop ...loop 编辑添加我的代码: my $sock = new IO::Socket::INET(
PeerAddr => '192.168.10.152',Proto => 'tcp');
$sock or die "no socket :$!";
open(my $fh,'<:encoding(UTF-8)','list1.txt')
or die "Could not open file $!";
while (my $msdn = <$fh>) {
my $port="8000";
my $ip="192.168.10.152";
unless ($sock->connected) {
$sock->connect($port,$ip) or die $!;
}
my $str="DATA TO SEND: " . $msdn;
print $sock $str;
}
close($sock);
解决方法
IO::Socket::INET是
IO::Socket的子类,其具有
connected method.
如果检查返回undef,您可以在循环和call my $sock = IO::Socket::INET->new(
PeerAddr => '192.168.10.7',Proto => 'tcp'
);
$sock or die "no socket :$!";
while ( 1 ) {
unless ($sock->connected) {
$sock->connect($port,$ip) or die $!;
}
# ...
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
