我使用java nio创建了一个客户端 - 服务器应用程序工作正常但我的问题是,当服务器连接到服务器的许多客户端响应除请求客户端之外的错误客户端例如,如果客户端A请求信息一个人服务器将客户端1的信息返回给客户端B而不是客户端A.我已经尝试过同步这些对象,但仍然无法解决可能存在的问题。 这是我的服务器示例代码
ByteArrayInputStream ins = new ByteArrayInputStream(bb.array());
ObjectInputStream ois = new ObjectInputStream(ins);
List l;
synchronized (ois) {
l = (List) ois.readObject();
}
ois.close();
bb.clear();
Thread t = new Thread(new TransmitData(l, this.sc, ss));
t.start();
答案 0 :(得分:0)
bb.array()
返回整个数组。你应该使用
bb.array(), bb.position(), bb.limit()
作为构造函数参数,或
bb.array(), 0, bb.position()
如果你翻了它。
注意:您不需要在方法本地对象上进行同步。没有人能够看到它。