无缘无故的 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#
程序使用的字符集。
我正在制作一个服务器客户端系统,其中客户端将向服务器写入消息,服务器将其保存为字符串并在控制台中打印。但是每当系统尝试读取我在控制台中得到 "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#
程序使用的字符集。