当前位置: 首页 > 知识库问答 >
问题:

javanio客户端服务器向客户端返回错误的值

赖翰
2023-03-14

我已经使用java nio创建了一个客户端-服务器应用程序,它工作正常,但我的问题是,当服务器有许多连接到服务器的客户端时,服务器会响应错误的客户端,而不是请求客户端。例如,如果客户端A请求第一个人的信息,服务器将第一个人的信息返回给客户端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();

共有1个答案

秦阳旭
2023-03-14
bb.array()

返回整个数组。你应该使用

bb.array(), bb.position(), bb.limit()

作为构造函数参数,或者

bb.array(), 0, bb.position()

如果你翻了。

注意,你不需要在方法本地对象上同步。别人甚至看不到它。

 类似资料:
  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我的服务器上再次收到错误。 { “错误”: “invalid_client” } 我已经编码到base64并将域列入了白名单,但仍然得到相同的错误。我会感激任何帮助,这让我发疯了,哈哈。

  • 问题内容: 我正在使用NodeJS Redis客户端(Node Redis) 并调用SISMEMBER Redis命令。但是,当我调用该命令时,无论该值是否是集合的成员,它总是返回true。 我将其与Node IRC模块结合使用。我不知道为什么Redis调用返回错误的值。我尝试过仅隔离Redis代码(不包含周围的代码),并且工作正常。代码如下,感谢您的帮助。 这行不通 这有效,但是 问题答案: 方

  • 前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,

  • 基本上,我希望能够有一个shell脚本,比如: 对于oracle,我只需在sql命令的顶部放置。有mysql的等价物吗?在谷歌没有找到任何东西。

  • deployment.yaml: 当从nginx-ingress pod获取日志时,我们注意到状态代码是,这意味着它正在工作。 产出: 但是,客户端返回: https://github.com/kubernetes/ingress-nginx/issues/3746 任何帮助都将不胜感激。