gpt4 book ai didi

java - 如何设计多客户端/服务器应用程序?

转载 作者:行者123 更新时间:2023-11-30 07:31:36 24 4
gpt4 key购买 nike

在基于套接字的应用程序(客户端/服务器)中,我想让服务器作为代理(管理器)来处理多个客户端,并从一个客户端获取消息并将其发送到客户端,由一个身份证。

如何知道需要的客户端运行在不同的线程上,如何获取该id代表的关联客户端的socket?

最佳答案

只需将某种客户端 ID 的内存 HashMap 保存到代表该客户端套接字的 java.net.Socket 对象。您需要想出一些分配客户端 ID 的方法,可以是客户端提供的,也可以是服务器通过某种授权方案提供的。

当收到客户端 ID 的消息时,从映射中获取套接字并向其发送消息。这个 map 需要存储在一个单例类型的对象中,并且需要适本地同步。使用并发 HashMap 。此外,如果您要使用多线程,则需要同步套接字读取和写入。

我已经发布了一些示例代码作为 github gist .这与我上面解释的有点不同。我不在映射中存储套接字,我存储具有套接字的客户端处理程序。此外,套接字读取不需要同步:每个客户端都有自己的线程,这是唯一从套接字读取的线程。套接字写入确实需要同步,因为发送客户端的线程正在写入接收客户端的套接字。

你可能最好使用像 JBoss Netty 这样的东西而不是自己滚动。

关于java - 如何设计多客户端/服务器应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7224165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com