小编Luc*_*Rey的帖子

在发送数据之前检查插座是否已连接

我在perl中使用套接字连接编写一个简单的代码:

$sock = new IO::Socket::INET(
                  PeerAddr => '192.168.10.7',
                  PeerPort => 8000,
                  Proto    => 'tcp');
$sock or die "no socket :$!";
Run Code Online (Sandbox Code Playgroud)

然后使用循环发送数据:

while...
print $sock $str;
...loop
Run Code Online (Sandbox Code Playgroud)

有没有办法在循环中插入一个命令来检查连接?就像是:

while...
   socket is up?
   yes => send data
   no => connect again and the continue with loop
...loop
Run Code Online (Sandbox Code Playgroud)

编辑添加我的代码:

my $sock = new IO::Socket::INET(
                    PeerAddr => '192.168.10.152',
                    PeerPort => 8000,
                    Proto    => 'tcp');
  $sock or die "no socket :$!";

  open(my $fh, '<:encoding(UTF-8)', 'list1.txt')
      or die "Could not open file $!";

  while (my $msdn …
Run Code Online (Sandbox Code Playgroud)

perl io-socket

8
推荐指数
1
解决办法
1519
查看次数

如何检测线程是否正在运行

以下是我正在研究的一个简单的代码示例.它只是启动一个线程,等待5秒,然后终止它.

#!/usr/bin/perl
use strict;
use warnings;
use threads;

sub thread_sub
 {
   threads->create(sub
    {
        sleep 5;   # HERE A WHILE ROUTINEs EMULATED BY SLEEP
        threads->detach();
    });
}

thread_sub();
exit;
Run Code Online (Sandbox Code Playgroud)

但结果是:

# ./multithread.pl 
Perl exited with active threads:
        1 running and unjoined
        0 finished and unjoined
        0 running and detached
Run Code Online (Sandbox Code Playgroud)

这是因为它运行线程但在退出之后没有等待.那么,我怎样才能在退出前等待线程完成?我知道有is_running,但我不知道如何在我的代码中实现它.遗憾的是,报告的代码只是一个了解如何实现is_running的示例.谢谢.

perl multithreading

1
推荐指数
1
解决办法
140
查看次数

在PERL循环期间每1秒执行一次命令

我必须在循环IN PERL期间每秒执行一次命令.我正在使用纪元时间尝试以下示例代码,但它不起作用,因为它连续打印:

#!/usr/bin/perl    
my $checktime = time() + 1;
while(1) {
    if ( $checktime => time() )
    {
       print "This should be print each second..." . "\n";
       $checktime = time() + 1;
    }
    # DO SOMETHING ELSE
}
Run Code Online (Sandbox Code Playgroud)

我不能使用sleep或freeze命令,因为在循环期间我必须执行其他命令而不中断执行.请你帮助我好吗?

谢谢卢卡斯

perl

0
推荐指数
1
解决办法
373
查看次数

标签 统计

perl ×3

io-socket ×1

multithreading ×1