java socket的C/S模式中,客户端与客户端怎么聊天

java socket的C/S模式中,客户端与客户端如何聊天?
现在在做一个简单的QQ聊天系统,
但遇到两个问题:
1、A客户端如何与B客户端聊天,是通过
         a.A客户端—服务器—B客户端的方式
         b.A客户端—B客户端的方式,中间是否需要通过服务器互相告知对客户端的IP
2、如何关联socket与相应的用户名,是要用Map吗?还是有其他更好的方法
 
------解决思路----------------------
楼主的问题想的太简单。

客户端与客户端的通信,一般都是通过服务器中转的。
------解决思路----------------------
一般是客户端-服务器-客户端,如果是A客户端—B客户端的方式,那就不说cs模式了,没有s了,这个是p2p模式了
------解决思路----------------------
引用:
一般是客户端-服务器-客户端,如果是A客户端—B客户端的方式,那就不说cs模式了,没有s了,这个是p2p模式了


早期的QQ其实就是P2P模式,服务器只是协助建立连接而已。
------解决思路----------------------
肯定要走服务器来中转信息啊。我前段时间才看了socket这一块,书上的案例就是一个client - server - client这样的聊天案例。
------解决思路----------------------
引用:
Quote: 引用:

楼主的问题想的太简单。

客户端与客户端的通信,一般都是通过服务器中转的。


也就是说类似于QQ的聊天工具我发给其他人的信息都一定会通过腾讯的服务器,然后在转发吗?那它是怎么识别我要发给谁的和谁转发的?是在信息的头端加上一部分转发人信息吗?然后在服务器处理?


当然了,不然*部为啥老要找腾讯帮助查找那些通过QQ联系的犯罪分子呢?