假設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