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

时间:2013-04-30 15:41:34

标签: 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();
}

但是我不会从inClient中收到任何东西,即使我像这样按钮

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

我没有得到结果

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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