考慮通過套接字發送的100個字節。對於TCP套接字,如果我調用recv()
長度爲50,我會得到前50個字節,如果我再次調用它,我會得到第二個50字節。使用UDP套接字,如果我調用長度爲50的recvfrom()
,我會得到前50個字節,但是無法檢索第二個50 - 隨後調用recvfrom()
塊,直到收到下一個數據報。接收整個UDP數據報,不管大小如何?
這是否意味着,如果我想接收一個完整的UDP數據報,無論大小,我必須分配一個64k緩衝區(UDP允許的最大值)?如果我connect()
我的UDP套接字,這是否改變了行爲?或者,一個在UDP上運行的協議通常需要一個已知的應該用於緩衝區的最大數據包大小?