使用DataInputStream
从套接字读取时,我得到一个未知字符。当我发送";你好"在服务器端,输出是"0";你好"未知的性格是问题所在。我是套接字编程的新手,所以我不知道可能是什么问题。我也尝试过使用BufferReader
和PrintWriter
,但当使用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);