PrintStream错误没有理由?

时间:2015-06-05 01:41:42

标签: java streamwriter datainputstream printstream

我正在创建一个服务器客户端系统,客户端将在其中向服务器写入消息,服务器将其保存为字符串并将其打印在控制台中。但是当系统尝试读取该行时,我在控制台中得到“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”。

1 个答案:

答案 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。