DataInputStream正在从套接字打印未知字符



使用DataInputStream从套接字读取时,我得到一个未知字符。当我发送";你好"在服务器端,输出是"0";你好"未知的性格是问题所在。我是套接字编程的新手,所以我不知道可能是什么问题。我也尝试过使用BufferReaderPrintWriter,但当使用readLine()时,服务器不会打印发送的文本,而是打印java.io.BufferedReader

服务器端:

//BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
DataInputStream is= new DataInputStream(socket.getInputStream());
String userinput= is.readLine();
System.out.println("Client message: "+userinput);

客户端:

//BufferedReader std= new BufferedReader(new InputStreamReader(System.in));
String userInput;
DataOutputStream out;
while((userInput=std.readLine()) !=null){
Socket socketClient= new Socket("localhost",5000);
OutputStream os= socketClient.getOutputStream();
out=new DataOutputStream(os);
out.writeUTF(userInput);
out.flush();
socketClient.close();
}

您在客户端使用writeUTF,您确定服务器端的readLine与之兼容吗?我以前从未见过这种情况,但javadoc提到它是一种"修改过的"UTF-8编码。请尝试使用readUTF,或者简单地使用常规的write方法。

如果读取UTF行,则可以写入UTF或ASCII字符,而不是读取ASCII字符,则必须将这些字符写入ASCII。尝试使用out.write(userInput);而不是out.writeUTF(userInput);

相关内容

  • 没有找到相关文章

最新更新