2013-04-30 55 views
0

发送这是我的客户端代码无法读取数量与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 recive任何东西,即使我chnage它这样

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

我没有得到结果

回答

1

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

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

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

1

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