2014-01-07 74 views
0

我正在研究Java流, 在服务器端,我试图通过objectOutputStream发送int并在客户端接收它。但是,我没有收到任何客户端。Java Socket - 通过对象流传递int?

这里是服务器侧发送INT

public static int PLAYER1 = 1; 
new ObjectOutputStream(player1.getOutputStream()).writeInt(PLAYER1); 

这里是在客户端侧接收INT:

fromServer = new ObjectInputStream(socket.getInputStream()); 

这里就是我测试收到的int部分:

int player = fromServer.readInt(); 
if(player == PLAYER1){ 
System.out.println("yy working"); 
}else{ 
    System.out.println("not working"); 
} 

问题是,我没有得到一个错误,也没有系统出来.. 我正在使用ObjectStreams而不是DataStreams,因为某些原因。

+0

这些片段建议您为每条消息创建新的流。不要这样做。最好是浪费,最坏的情况下不会工作。在套接字的生命周期中使用相同的流。 – EJP

回答

0

呼叫close()flush()

public static int PLAYER1 = 1; 
ObjectOutputStream oos = new ObjectOutputStream(player1.getOutputStream()); 
oos.writeInt(PLAYER1); 

oos.flush(); 

// OR 

oos.close(); 

flush()将派已经写入到客户端的数据。这将使您可以重复使用oos

如果您不需要oos,请致电close()。调用close()将清除尚未发送的数据。

+0

非常感谢。这真的有效:) – m1alesis

+0

@ user3170763不客气;) – Stephan

0

您的代码似乎无法通过呼叫int player = fromServer.readInt();。我会在readInt()或之前调试调用,以查看它跳出的位置。在服务器端

+0

谢谢,是的,你是对的..不得不使用flush(); ;) – m1alesis