我在网上下载了一个java版本的qq
也研究了下,现在遇到一个小小问题,请教下大家比方说,a与b这两个人开始聊天
a发送的消息,是怎么找到b的,把消息准确发送给b的。
我一直没看明白这方面的代码,请教知道的人解释下。
我在这里自己也适当的想下,我觉得,要找到b最少得知道b的ip地址吧,然后用“流”来传递,但是,a又是怎么知道b在那台电脑上哦?

解决方案 »

  1.   

    不是有服务器吗?每个人上线的时候在服务器上登记一下IP。
    顺便获取好友的IP。这不就行了
      

  2.   

    你那个QQ支持局域网还是支持所有的公网?支持局域网的实现起来不难,用服务器专门处理“上线”和“位于哪台电脑”等之类的问题就可以了,支持公网的话,那么还得对udp包进行解剖,这个就难多了。
      

  3.   

    详细的源码可以去找lummaQQ,那是开源的
      

  4.   

    如果在公网上,qq用udp协议的话,2个人互相聊天。其数据流通是怎么工作的呀,要不要通过腾讯服务器来转发哦?大家互相聊聊呀
    ,还有,一般的用户在用电脑上网的时候,其实是没有固定公网ip地址的,qq又是怎么找到对方的哦,一直让我困惑
      

  5.   

    是用socket吧
    这样会有一个client 和server 
    在server端 会有个线程记录了所有client的IP和端口号
    在client端会记录server的IP和端口号
    client在给server或者其他的client发信息的时候就根据这个IP和端口号找到其他的client发送信息给他了
    在下暂时是这么理解的
      

  6.   

    你可以找腾讯拿通讯协议
    界面只要用swt或者swing画的像就是了
    主要是后台通讯的处理问题,据我所知QQ的通讯协议非常复杂,而且TM和QQ好像还是有区别的