在perl中返回recv()函数的值

在perl中返回recv()函数的值,第1张

概述我用这种方式在perl中有非阻塞UDP套接字 my $my_sock = IO::Socket::INET->new(LocalPort => $MY_PORT, Proto => 'udp', Blocking => '0') or die "socket: $@"; recv电话 我用这种方式在perl中有非阻塞UDP套接字

my $my_sock = IO::Socket::INET->new(LocalPort => $MY_PORT,Proto => 'udp',Blocking => '0') or dIE "socket: $@";

recv电话是

my $retValue = $sock->recv($my_message,64);

我需要知道
a)当没有数据可供阅读时
b)如果有数据,则读取了多少数据
c)任何错误条件

令人惊讶的是,我没有看到perldoc中recv的任何返回值.当我自己尝试时,recv在(a)中返回undef,因为b是一个不可打印的字符

这似乎是一个基本问题.但是,我仍然无法在Google搜索或堆栈溢出时找到相关信息.谢谢任何输入

解决方法 根据perldoc,如果SOCKET的协议支持,recv“返回发送方的地址;否则返回一个空字符串.如果有错误,则返回未定义的值.”

如果你得到一个undef,这意味着recv遇到错误.

代码中的错误如下:

$retValue = $sock->recv($my_message,64);

recv的函数原型是:

recv SOCKET,SCALAR,LENGTH,FLAGS

根据perldoc,recv“尝试从指定的SOCKET文件句柄接收数据的LENGTH字符到变量SCALAR.SCALAR将增长或缩小到实际读取的长度.”

尝试:

$retvalue = recv($sock,$my_message,64)

这是我获得所有信息的地方:
http://perldoc.perl.org/functions/recv.html

总结

以上是内存溢出为你收集整理的在perl中返回recv()函数的值全部内容,希望文章能够帮你解决在perl中返回recv()函数的值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存