无缘无故的 PrintStream 错误?

PrintStream Error with no reason?

我正在制作一个服务器客户端系统,其中客户端将向服务器写入消息,服务器将其保存为字符串并在控制台中打印。但是每当系统尝试读取我在控制台中得到 "PrintStream error" 的行时。没有错误或任何东西。我正在读取服务器上的字符串:

DataInputStream inFromClient = new DataInputStream(socket.getInputStream());
String connectReason = inFromClient.readUTF();

我从客户端发送的字符串是这样的:

clientSocket = new TcpClient(Host, Port);
Stream = clientSocket.GetStream(); 
outToServer = new StreamWriter(Stream);

为什么会出现该错误?他们连接没有错误,当我到达那条线时,我得到 "PrintStream Error".

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# 程序使用的字符集。