情况:
我有这势必本地主机的UDP端口33100.我有一个绑定到本地主机的UDP端口33101一receiversocket插座sendersocket。
发送方插口发送4500个字节的数据(字符串“hello人” * 500)。 在接收机侧,我有等待在receiversocket的EPOLLIN事件的epoll的对象。 当有一个事件,我做的:
while True:
msg_received = receiver_socket.recv(128)
if msg_received.decode("UTF-8") == "":
break
else:
print msg_received.decode("UTF-8")
问题:
主要的问题是,我看过的前128个字节的数据后,我无法再读取。 发送方说,它发送4500个字节的数据如预期。
如果发送者再次发送相同的4500个字节的数据,该EPOLLIN事件再次注册和我读到新的字符串。 不知怎的,缓冲得到的我第一次读后清零。
现在,即使发送者刚刚发给我的4500个字节的数据,第一recv
给了我128个字节的数据,然后什么都不是recv
版之后。
我可能做一些非常愚蠢的,请赐教。 我希望收到所有的4500个字节的数据。