【问题标题】:Can not read number send with DataOutputStream无法读取使用 DataOutputStream 发送的数字
【发布时间】:2013-04-30 15:41:33
【问题描述】:

这是我的客户代码

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");

我没有结果

【问题讨论】:

    标签: java datainputstream dataoutputstream


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果您在写入端使用writeInt(),您应该在读取端使用readInt()(所有方法名称在 DataOutputStream 和 DataInputStream 之间关联,请阅读 javadoc)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 2018-12-20
        • 2022-01-24
        • 1970-01-01
        相关资源
        最近更新 更多