java - 无法读取使用 DataOutputStream 发送的号码

标签 java datainputstream dataoutputstream

这是我的客户端代码

Random rand = new Random();
int  n = rand.nextInt(50) + 1;
DataInputStream dis = new DataInputStream(_socket.getInputStream());
DataOutputStream dos = new DataOutputStream(_socket.getOutputStream());
dos.writeInt(n);

这是服务器代码

try {
     DataInputStream dis = new DataInputStream(socket.getInputStream());
     BufferedReader input = new BufferedReader(new InputStreamReader(dis));  
     int fromClient = input.read();
     System.out.println(fromClient);
} catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
}

但是我没有在 fromClient 中收到任何东西,即使我像这样改变它

System.out.println(fromClient+"test");

我没有得到结果

最佳答案

客户端需要调用dos.flush()dos.close()来将缓冲的数据推送到服务器。 (如果你打算写入更多数据,则flush,否则关闭。)

服务器端需要使用DataInputStream实例上的readInt读取数据。使用 DataOutputStream 写入的数据应使用 DataInputStream 读取。

最后,摆脱 BufferedReader/InputStreamReader。这是错误的。

关于java - 无法读取使用 DataOutputStream 发送的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16303802/

相关文章:

java - 以粗体显示部分 JLabel

java - 循环读取 "ls/datadata"输出

java - 从 URL 连接 Java 读取

java - 为什么ObjectOutputStream写入14个字节而不是DataOutputStream写入8个字节?

java - 我如何暂停扫描仪阅读以广播消息?

java - 用户输入验证: date input

java - 如何在 Java 中将两个非常大的数字相加,无论其大小如何,而不使用 BigInteger 数据类型?

根据 Eratosthenes 筛法的 Java Prime 计算器

java - DataInputStream接收不准确

hadoop - FSDataOutputStream.writeUTF() 在 hdfs 数据的开头添加额外的字符。如何避免这些额外的数据?