2010-10-23 242 views

回答

7

簡答題:消息邊界和連接。

使用流套接字,你可以寫兩個五字節的消息,並結束讀取一個十字節的消息。這是因爲您寫入的數據只是放在一個單獨的數據流中,寫入的數據之間沒有任何界限。這就像一次寫入一個文件一樣。作爲該文件的讀者,您如何知道作者最初是否一次一個字符地寫入文件,一次一個字,一次一個字,一次一個字,或者一次寫入整個文件?基本上,如果文件已經寫好,你就不會。對於流,如果發送連續快速完成,您將如何知道源發送了兩個五字節消息或一個十個字節的消息?你必須有某種長度或分隔符來幫助指示消息邊界。有時你不關心消息或其邊界。其他時候,您可以添加應用程序級別的數據(例如標題,分隔符,預定義的消息長度等)。這使得流套接字也可以使用,因爲您自己處理消息(即在應用程序層)。

對於基於數據報的套接字,接收者知道發送者發送的消息的大小,因爲它們以1:1(baring loss,dups等)傳送,保留了它們的原始大小。除了所有這些,基於流的套接字傾向於面向連接和1:1,而數據報套接字無連接,並且可能是一個(源)到多個(接收器)的,具有廣播/組播。

相關問題