1

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

4

1 回答 1

0

readUTF()方法期望数据以特定方式格式化(更多细节在这里),看起来像C#程序的数据发送的数据没有以该方法可以正确解释的方式格式化readUTF()

您可以从套接字的输入流中读取原始字节并将其转换为 a 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();
}

C#将“UTF-8”替换为程序使用的字符集。

于 2015-06-05T01:48:28.283 回答