DataInputStream 从套接字打印未知字符
DataInputStream printing unknown character from a socket
我在使用 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
,您确定服务器端的 readLine
与其兼容吗?我以前从未见过,但 javadoc 提到它是 "modified" UTF-8 encoding。尝试使用 readUTF
,或者简单地使用常规的 write
方法。
如果您读取 UTF 行,则可以写入 UTF 或 ASCII 字符,但如果您读取 ASCII 字符,则必须将这些字符写入 ASCII。
尝试使用 out.write(userInput);
而不是 out.writeUTF(userInput);
我在使用 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
,您确定服务器端的 readLine
与其兼容吗?我以前从未见过,但 javadoc 提到它是 "modified" UTF-8 encoding。尝试使用 readUTF
,或者简单地使用常规的 write
方法。
如果您读取 UTF 行,则可以写入 UTF 或 ASCII 字符,但如果您读取 ASCII 字符,则必须将这些字符写入 ASCII。
尝试使用 out.write(userInput);
而不是 out.writeUTF(userInput);