1
在Linux中,Linux,使用Socket和讀寫功能,可以將數據分散嗎?
我正在編程使用客戶端 - 服務器結構的簡單聊天程序。它也包含文件傳輸功能。
我設計的格式用於客戶端向這樣的服務器傳輸文件數據。 (1個字節表示這是文件數據)(2個字節信息來區分發送者,接收者)(1個字節表示當前數據發送大小是多少)(DATA ............ ..)
上述信息將存儲在buf[]
(char[]
)
,發件人使用寫入呼叫來發送文件數據,接收器使用讀呼叫接收文件數據。
我不知道上面的格式在讀取時可能會碎片化,使用使用套接字描述符的寫入函數。例如,發件人寫入sbuf[] = "abcdefgh"
。接收器總是讀取rbuf[] = "abcdefgh"
? 或rbuf[]
可能是= "a"
或"ab"
或或"abcd"
或....東西?
假設tcp,是的,數據可以在讀取之間進行分段。在獲取所有數據之前,您可能必須在多次讀取之間進行讀取和緩衝。讀取的返回值將告訴您使用該調用讀取的字節數。 – Duck 2013-03-18 05:16:11
Btw:對'write()'的調用也不一定寫出所指定的字節數量並且需要重複。始終檢查系統調用返回的值。 – alk 2013-03-18 07:23:04
@Duck我可以得到參考的地方嗎?我查看了linux系統調用[linux manual](http://linux.die.net/man/2/read)中的'read','write'。但是,它沒有提到碎片,我找不到:(。謝謝你提前給予的幫助。 – podray 2013-03-19 11:52:36