【发布时间】:2013-02-19 01:49:35
【问题描述】:
我正在尝试创建一个服务器和客户端,其中服务器根据客户端发送的内容向客户端返回不同的消息。如果客户端建立连接但什么都不发送,服务器将返回消息 1,如果客户端发送了一些数据,服务器将返回消息 2。但这不起作用,客户端保持等待数据并且没有任何打印。
客户:
use IO::Socket;
my $sock = new IO::Socket::INET (
PeerAddr => '10.1.1.28',
PeerPort => '7070',
Proto => 'tcp' );
if (@ARGV != "") {
print $sock "$ARGV[0] $ARGV[1]";
} else {
$data = <$sock>;
print $data;
}
$sock->close;
服务器
use IO::Socket;
my $sock = new IO::Socket::INET (
LocalHost => '10.1.1.28',
LocalPort => '7070',
Proto => 'tcp',
Listen => '1',
);
while(1) {
my $new_sock = $sock->accept();
if (<$new_sock> ne "") {
print $new_sock "conection with parameters";
} else {
print $new_sock "default message";
};
【问题讨论】:
-
始终使用
use strict; use warnings; -
"如果 clint 建立连接但不发送任何内容,则服务器返回消息 1",不,它没有。服务器等待客户端无条件发送。
标签: perl sockets client-server conditional