我正在创建一个服务器客户端系统,客户端将在其中向服务器写入消息,服务器将其保存为字符串并将其打印在控制台中。但是当系统尝试读取该行时,我在控制台中得到“PrintStream错误”。没有错误或任何东西。我正在服务器上读取字符串:
DataInputStream inFromClient = new DataInputStream(socket.getInputStream());
String connectReason = inFromClient.readUTF();
我正在从客户端发送字符串,如下所示:
clientSocket = new TcpClient(Host, Port);
Stream = clientSocket.GetStream();
outToServer = new StreamWriter(Stream);
为什么我会收到该错误?它们连接时没有错误,当我到达那一行时,我得到了“PrintStream Error”。
答案 0 :(得分:0)
readUTF()
方法期望以特定方式(more details here)格式化数据,通过看起来像C#
程序发送的数据的格式不会以由readUTF()
方法正确解释。
您可以从套接字的输入流中读取原始字节,并将其转换为String
,例如:
try(InputStream in = socket.getInputStream()){
byte[] b = new byte[1024];
String msg = "";
for(int r;(r = in.read(b,0,b.length))!=-1;){
msg += new String(b,0,r,"UTF-8");
}
System.out.println("Message from the client: " + msg);
}catch (Exception e) {
e.printStackTrace();
}
替换" UTF-8"使用C#
程序使用的charset。