TCP协议通信中,两个客户端之间是如何进行通信的

我现在在学习JAVA的网络编程,我想实现一个类似于QQ那样的通信软件,但是我不知道客户端与客户端之间是怎么通信,他们是通过一个服务端来进行通信的吗,例如:客户端A想跟客户端B通信,需要客户端A先跟服务端C通信,然后再通过服务端C与客户端B通信,是这样吗?

对的
A将信息发给C,C在socket表中查找之前C与B的socket,然后根据这个socket,把信息转发给B

http://www.enmaking.com/article/ar_4TOGp7ZZ http://www.enmaking.com/article/ar_4TOGp7ZZ