我在AIX 5.3中使用Perl套接字,Perl版本5.8.2
我有一个用Perl套接字编写的服务器。有一个名为“阻塞”的选项,可以设置为0或1。当我使用Blocking => 0运行服务器和客户端发送数据(5000字节)时,我一次调用只能接收2902字节。当我使用Blocking => 1时,我能够在一次调用中接收所有字节。
这是套接字的工作方式,还是它是一个bug?
发布于 2009-10-13 05:31:46
这是套接字的基本部分--或者更确切地说,是TCP,它是面向流的。(UDP是面向数据包的。)
你不应该假设你能得到你想要的数据,也不能假设没有更多的数据可用。基本上,当连接打开时,更多的数据可以在任何时候到来。(read/recv/ end调用可能会返回一个特定值,表示“另一端关闭了连接”。)
这意味着您必须设计您的协议来处理此问题-如果您正在有效地尝试将离散消息从A传递到B,则有两种常见的方法来完成此操作:
(另一种选择是对整个连接只有一条消息-即直到连接关闭为止。)
https://stackoverflow.com/questions/1558259
复制相似问题