【发布时间】:2020-02-29 00:08:52
【问题描述】:
使用DataInputStream 从套接字读取时,我得到一个未知字符。当我在服务器端发送“Hello”时,输出是“Hello”,未知字符就是问题所在。我是套接字编程的新手,所以我不知道问题可能是什么。我也尝试使用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()不写一行,也不只是写字节。它首先写入一个长度字。请参阅 Javadoc。如果您使用writeUTF()发送,您必须使用readUTF()接收。
标签: java printwriter datainputstream inputstreamreader