2009-04-23 56 views
1

我寫了一個套接字程序,其中客戶端使用readUTF()writeUTF()與服務器通信,而服務器使用read()和write()與客戶端進行通信。Java Socket程序無法讀取數據,如果服務器發送數據使用寫入和接收數據使用readUTF()

我的服務器可以讀取來自服務器的所有數據。我在服務器端使用write(),在客戶端使用readUTF()。

因此,在這種情況下,如果數據量很大,我的客戶端無法獲取服務器發送的所有數據,只會收到一部分數據。

應該做些什麼來確保所有數據的傳輸?

+0

你能提供一個關於套接字實現的小背景嗎? UDP或TCP等? – 2009-04-23 09:36:36

回答

0

請注意,readUTF和writeUTF使用UTF的修改形式。我不知道你使用服務器上的read()和write()函數發送了什麼,但是你應該確保客戶端期望的內容和服務器期望的內容兼容。

我會讓客戶端和服務器使用相同的方法發送/接收。我不知道這是否會導致你的問題,但它會爲你節省一些無關的痛苦。

1

在這種情況下不要使用readUTF和writeUTF。相反,讀取和寫入的字節數組:

read(byte [] b) 

然後使用適當的String構造的字節數組轉換爲字符串:

public String(byte[] bytes, 
       String charsetName) 

你應該的try-catch UnsupportedEncodingException異常。

相關問題