Java Socket - 通过对象流传递int?

时间:2014-01-07 21:14:41

标签: java sockets stream

我正在研究Java流, 在服务器端,我试图通过objectOutputStream发送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。

2 个答案:

答案 0 :(得分:0)

您的代码似乎无法在通话int player = fromServer.readInt();之后继续存在。我会在readInt()或之前调试调用,以查看它跳出的位置。

答案 1 :(得分: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()将刷新尚未发送的任何数据。