使用下面的代码,我没有在控制台上打印“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'不一样。那么,为什么你期望数据回显? –