我正在創建一個簡單的客戶機 - 服務器應用程序,並在通過Socket傳遞消息時面臨一些奇怪的行爲:當客戶機寫入服務器時,消息正確傳遞,但是當服務器發送對此,取其值通過套接字發送似乎得到複製...通過套接字傳遞字符串重複值
這裏是服務器的操作示例代碼:
.
.
.
public void respond(Socket socket)
{
try
{
InputStreamReader inStream = new InputStreamReader(socket.getInputStream());
PrintWriter outStream = new PrintWriter(
new OutputStreamWriter(socket.getOutputStream(), "UTF-16"));
outStream.write("Message received\n");
outStream.flush();
.
.
.
}
catch (Exception e) { /* Do something */ }
}
.
.
.
服務器和客戶端當前在同一臺機器上運行。此外,從客戶端寫入服務器時編碼似乎不成問題,但是從服務器寫入客戶端時:如果我爲OutputStreamWriter指定任何其他(或不包含)UTF-16編碼,則客戶端將獲得無法正確解析消息。
你們有沒有想法爲什麼這可能是?
我認爲你犯了一個錯誤粘貼你的代碼,taht不編譯(重複變量)。 – Dici 2014-11-05 17:24:23
有可能您的代碼實際上並未被編譯,而是在現有編譯中運行,因爲您有兩次相同的代碼塊,導致重複的變量錯誤。 – Zymus 2014-11-05 17:28:40
Sry,發生粘貼時,我編輯它,仍然是同樣的問題 – pablo 2014-11-05 17:45:01