我正在制作一个服务器客户端系统,其中客户端将向服务器写入消息,服务器将其保存为字符串并在控制台上打印。但是当系统试图读取这行时,我在控制台中得到"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()
方法期望以特定的方式格式化数据(更多细节在这里),看起来像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#
程序使用的字符集