IM中
比如A线程服务于A B线程服务于B
A要给B发消息 那么A和B共享一个socket 那A线程又是如何获得和B的tcp长连接呢
IM中
比如A线程服务于A B线程服务于B
A要给B发消息 那么A和B共享一个socket 那A线程又是如何获得和B的tcp长连接呢
线程之间不需要通过 Socket,这样是把简单的事情复杂化了。多个线程可以访问同一个对象的,就去访问同一个对象来进行交互。但一般来说,这肯定是设计上有问题。这个要具体情况具体分析了。
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答704 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
用容器将每个用户对应的连接存储起来, 比如你单个服务的话, 用ConcurrentHashMap存下来用户和socket的对应关系, A线程要给B发送消息就从这个map中获取B对应的socket,然后写数据. 不过这样如果B断开连接你得把map中的B对应的数据删除掉