0

这是我的客户代码

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

我没有结果

4

2 回答 2

1

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

于 2013-04-30T15:43:48.163 回答
1

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

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

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

于 2013-04-30T15:43:56.337 回答