使用下面的代碼,我沒有在控制檯上打印「daSHI」。 而不是我得到「?????」打印。套接字 - 錯誤的OutputStream輸出(質樸的問號)
爲了測試,而不是使用套接字的輸入/輸出流,我創建了一個FileInputStream和FileOutputStream從同一個文件中讀寫,並且「daSHI」打印得很好。
但是,當我使用sock.getOutputStream和sock.getInputStream時,由於某種原因它不起作用。我得到的只是問號。有任何想法嗎?編碼問題?
public void sendMessage(Socket sock) throws KVException {
OutputStream outStream;
InputStream inStream;
try{
byte[] b = {'d', 'a', 'S', 'H', 'I'};
outStream = sock.getOutputStream();
outStream.write(b);
sock.shutdownOutput();
inStream = sock.getInputStream();
for (int i = 0; i < b.length; i++) {
System.out.print("" + (char) inStream.read());
}
}
catch(IOException e){
KVMessage errorMessage = new KVMessage("resp", "Network Error: Could not send data");
throw new KVException(errorMessage);
}
}
這是一個環回套接字連接?您沒有展示如何將套接字連接到另一端。迴應數據的另一端是什麼? –
隨機猜測:輸入流位於EOF處,並且僅爲5倍-1。省略(char)來驗證。爲什麼?取決於您的服務器...您是否嘗試添加outStream.flush()並僅在您從輸入讀取數據後關閉套接字? –
你的'''InputStream'與'OutputStream'不一樣。那麼,爲什麼你期望數據回顯? –