假设Linux和使用UDP。上recvfrom的混乱()在应用程序级协议设计
recvfrom的的manpage说:
的接听电话通常返回可用任何数据,直到请求的数量,而不是等待接收请求的全额。
如果是这种情况,那么它是非常可能从插座返回部分应用程序级协议数据,即使期望MAX_SIZE
被设置。
应recvfrom
的后续调用进行?
在另一种意义上,它也可能有比我想要的数据,在插座的缓冲比如两个UDP包多。如果recvfrom()
被称为在这种情况下,它会返回他们两个(内MAX_SIZE
假设)?
我想应该有一些应用协议级别的大小信息在每个UDP消息的开始,以便它不会搞砸。
那么关于后续recvfrom的( )电话?它会得到第一个已存在于第一个缓冲区中的第二个缓冲区吗? – Figo 2010-01-28 03:49:51
@Figo:是的,它一次只返回一个。 – 2010-01-28 04:08:14