对于同一个服务 服务器多个线程共享一个socket?
IM中
比如A线程服务于A B线程服务于B
A要给B发消息 那么A和B共享一个socket 那A线程又是如何获得和B的tcp长连接呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
IM中
比如A线程服务于A B线程服务于B
A要给B发消息 那么A和B共享一个socket 那A线程又是如何获得和B的tcp长连接呢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
用容器将每个用户对应的连接存储起来, 比如你单个服务的话, 用ConcurrentHashMap存下来用户和socket的对应关系, A线程要给B发送消息就从这个map中获取B对应的socket,然后写数据. 不过这样如果B断开连接你得把map中的B对应的数据删除掉
线程之间不需要通过 Socket,这样是把简单的事情复杂化了。多个线程可以访问同一个对象的,就去访问同一个对象来进行交互。但一般来说,这肯定是设计上有问题。这个要具体情况具体分析了。