使用序列化对象的客户端/服务器通信

时间:2011-06-11 16:47:32

标签: java sockets serialization

我尝试为策划游戏建立客户端/服务器连接。 我使用枚举来表示不同的钉子并使它们可序列化。

然后我必须实现连接,使用serversocket并使用accept等获取套接字。 一旦建立连接,我首先必须阅读客户端对象,这是我遇到问题的地方......

这是我的一段代码,在我做任何事情之前都会产生EOFException! (客户端数据是根据用户的交互发送的)。

ObjectInputStream ois =
    new ObjectInputStream(socket.getInputStream());
ArrayList<Peg> combination = new ArrayList<Peg>();
do
{
    combination.clear();
    for (int i = 0; i < 4; i++)
    {
        combination.add((Peg)ois.readObject());
    }
}
while (!checkCombination(combination));
ois.close();
socket.close();

提前感谢

2 个答案:

答案 0 :(得分:2)

我们需要更多细节。你如何同步客户端的写入和服务器上的读取?你能发布更多细节吗?

BTW,使用原始套接字是绝对的要求吗?如果没有,请尝试RMI,这样可以轻松完成您想做的事情(即透明地发送Java对象等等)。

答案 1 :(得分:0)

如果您收到EOFException,则表示另一端已关闭连接。

如果要发送列表,只需发送列表即可。即。

// on the sender
List<Peg> list =
oos.writeObject(list);

// on the receiver
List<Peg> list = (List<Peg>) oid.readObject();