相关疑难解决方法(0)

perl,使用IO :: Select和IO :: Socket :: INET读取阻塞

这台服务器工作正常,但如果我这样做

bash $(echo -n"abcd"; sleep 50; echo"efgh")| nc localhost 9090

服务器阻塞50秒.在我的完整代码中,我有多个IO::Select::INET.我有另一个套接字侦听其他端口(1234),当服务器被睡眠阻塞时,我无法处理该端口中的任何内容.我试图改变getline通过getc,但我只看过的第一个字母"a"和它的块.

有人可以帮帮我吗?

use common::sense;
use IO::Select;
use IO::Socket;

use constant PORT1 => 9090;
use constant TIMEOUT => 1;

my $event_socket  = new IO::Socket::INET(Listen => 1, LocalPort => PORT1, ReuseAddr => 1) 
    or die "Can't bind event_socket: $@\n";

my $sel = IO::Select->new;
$sel->add($event_socket);

my $event_emiter = undef;

while(1){ 
    foreach my $sock (my @ready = $sel->can_read(TIMEOUT)) {
        if ($sock == $event_socket) {
            my $new = $event_socket->accept; …
Run Code Online (Sandbox Code Playgroud)

unix sockets perl nonblocking

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

标签 统计

nonblocking ×1

perl ×1

sockets ×1

unix ×1