我寫了一個套接字程序,其中客戶端使用readUTF()
和writeUTF()
與服務器通信,而服務器使用read()和write()與客戶端進行通信。Java Socket程序無法讀取數據,如果服務器發送數據使用寫入和接收數據使用readUTF()
我的服務器可以讀取來自服務器的所有數據。我在服務器端使用write(),在客戶端使用readUTF()。
因此,在這種情況下,如果數據量很大,我的客戶端無法獲取服務器發送的所有數據,只會收到一部分數據。
應該做些什麼來確保所有數據的傳輸?
我寫了一個套接字程序,其中客戶端使用readUTF()
和writeUTF()
與服務器通信,而服務器使用read()和write()與客戶端進行通信。Java Socket程序無法讀取數據,如果服務器發送數據使用寫入和接收數據使用readUTF()
我的服務器可以讀取來自服務器的所有數據。我在服務器端使用write(),在客戶端使用readUTF()。
因此,在這種情況下,如果數據量很大,我的客戶端無法獲取服務器發送的所有數據,只會收到一部分數據。
應該做些什麼來確保所有數據的傳輸?
請注意,readUTF和writeUTF使用UTF的修改形式。我不知道你使用服務器上的read()和write()函數發送了什麼,但是你應該確保客戶端期望的內容和服務器期望的內容兼容。
我會讓客戶端和服務器使用相同的方法發送/接收。我不知道這是否會導致你的問題,但它會爲你節省一些無關的痛苦。
在這種情況下不要使用readUTF和writeUTF。相反,讀取和寫入的字節數組:
read(byte [] b)
然後使用適當的String構造的字節數組轉換爲字符串:
public String(byte[] bytes,
String charsetName)
你應該的try-catch UnsupportedEncodingException異常。
你能提供一個關於套接字實現的小背景嗎? UDP或TCP等? – 2009-04-23 09:36:36