perl tcp客户端不显示传入数据
我对网络编程一无所知,无法解决这个问题 我有一个服务器(某种到TCP/IP代理的LPT端口),它会自动尝试以随机间隔建立连接。我需要监听特定端口并与服务器通信。那是客户。它可以与perl tcp服务器配合使用。。但在这种情况下,它会等待。。。。什么也没发生perl tcp客户端不显示传入数据,perl,sockets,tcp,Perl,Sockets,Tcp,我对网络编程一无所知,无法解决这个问题 我有一个服务器(某种到TCP/IP代理的LPT端口),它会自动尝试以随机间隔建立连接。我需要监听特定端口并与服务器通信。那是客户。它可以与perl tcp服务器配合使用。。但在这种情况下,它会等待。。。。什么也没发生 #!/usr/bin/perl -w use IO::Socket; my $sock = new IO::Socket::INET( LocalHost => '192.168.1.1', LocalPort =>
#!/usr/bin/perl -w
use IO::Socket;
my $sock = new IO::Socket::INET(
LocalHost => '192.168.1.1',
LocalPort => '7000',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!\n" unless $sock;
my $new_sock = $sock->accept();
while (<$new_sock>) {
print $_;
}
close($sock);
但是如果我试着
nc -l 192.168.1.1 7000
它就像一个魅力,数据是流动的。并且只存在一个连接(与第二个连接类似)
客户端捕获的一个符号传输的tcpdump片段。看起来还可以
21:42:00.242172 IP (tos 0x0, ttl 64, id 30448, offset 0, flags [DF], proto TCP (6), length 53)
192.168.1.2.33837 > 192.168.1.1.7000: Flags [P.], cksum 0x5646 (correct), seq 3592562130:3592562131, ack 1351632513, win 92, options [nop,nop,TS val 140364552 ecr 92554083], length 1
我不知道我做错了什么。。。更复杂的例子不适合我,因为我不知道如何调试它们
,是readline($new_sock)的缩写,仅在收到完整的行后返回,也就是说,当收到换行符时返回
sysread
将在数据可用时立即返回,因此您可以使用它
my $rv = sysread($new_sock, my $buf, 64*1024);
或者,由于接收到的行以回车结束,因此可以将其与Perl通信
$/ = "\r";
遭受缓冲?如果添加
$|=1代码>?顺便说一句,没有两个连接。只有第二个连接。有一个监听服务器套接字($sock
)和一个连接的客户端套接字($new\u sock
),这两个套接字都很好。$|=1;使用后添加。。。我没有做这个把戏。。。服务器正在发送ascii字符。。。应该可以工作…客户端是否正在发送换行符(0x0A)<代码>
只有收到一个才会返回。不,只有CR。有什么办法可以避免吗?目前我无法模仿0x0a。我想通过它发送数据,而不仅仅是ASCII。每个包装都必须进行LF终止?非常感谢这个解决方案!我想指出的是,将任何变更的范围限制在以下方面是一个好主意:。
$/ = "\r";