我在Perl中使用client and server
编写了示例TCP protocol
程序。
所以我使用了send()
和recv()
函数。
在那里我试图获得recv()
函数的返回值。
示例代码是,
my $return_value;
$return_value = recv($client_socket, $data, 50, 0);
print "return value is: $return_value\n";
当我执行我的代码时,它不会打印任何值。 例如:
return value is:
之后我读了下面的链接,即使我没有得到任何返回值。 return value of recv() function in perl
我怎么解决这个问题?
感谢。
答案 0 :(得分:3)
它可能是undef,表示发生错误 [1] 。
use Socket qw( unpack_sockaddr_in );
defined($return_value)
or die("Can't recv: $!\n");
my ($peer_port, $peer_addr) = unpack_sockaddr_in($return_value);
您已经知道与之通信的对等方的地址和端口,因此这不是非常有用。这就提出了一个问题:为什么使用recv
(而不是sysread
)来连接像TCP这样的流媒体协议?你是否意识到你有时会得到少于你要求的50
个字符?
use strict; use warnings 'all';
!如果$return_value
为undef,"return value is: $return_value\n"
会发出警告。