我是想实现QQ的原理
客户端有两个WINSOCK
一个是TCP的,与服务器连接,随时得到在线人数
一个是UDP的,用来发送信息给在线用户
TCP方式的是正常,但是用UDP的,
发送信息的时候就出现那个"连接远端被重置"的错误
是不是因为UDP方式的时候没有得到代理服务器内的IP大家介绍一下QQ在局域网中是如何用UDP方式的,

解决方案 »

  1.   

    首先搞清楚
    客户端上网的方式:拨号:有internet ip,正常
    Nat 透明代理:没有Internet IP
    Socks5:必须设置代理的ip,port,auth信息
    Http代理:......你可能遇到的问题在于没有取得对方的internet ip.
      

  2.   

    搜索一下QQ,应该有些NAT,socks5的讨论,也许有所启发.
      

  3.   

    我以前和朋友讨论过,只是在自己做的时候遇到局域网的用户的时候没法解决
    它是客户端到服务器用TCP方式
    客户端到客户端是UDP方式
    当两客户端相互发信息时,在线就用UDP方式发送过去,不在线,就用TCP方式发送到服务器存在数据库中,当对方下次来的时候就在登录的时候检测是不否有旧信息,有,就发送过去现在我遇到的问题主要就是UDP如何获得局域网的IP
    通过代理上网的用户的IPto sufeng(sufeng) :
    正是,那么该如何解决
      

  4.   

    局域网内qq需要通过代理(象前面说的sock5),代理的作用就相当于给客户端在有internet ip的机子上增加一可被UDP数据达到的方式,也就是选一个可用的PORT,(因为不是服务端,所以port可不是固定,而且登录的时候,也就把本客户的IP和PORT提交给服务器),这样两个客户端可以相互UDP了. 至于前面说的如何得到局域网内IP,我想是不可能的,代理的作用就是要把局域网内情况隐藏起来,而且即使你得到局域网内的IP又能怎样呢?你还是需要有个象代理一样的功能.
    其实你用些工具就会发现,直接上网QQ的port都是4000,而局域网内代理QQ的都不是4000(这个port应该已经给代理占用来接收内部QQ的请求了).
    所以,也许你都不需要知道sock5这样的东东是怎么动作也能完成你所想,也许你还是要去知道一些在你作的不顺的时候.
    以上都是自己的一家之言,请大家指正.
      

  5.   

    我们公司是用自己的路由器上网的
    QQ的端口号一般为4000,
    但是经过我们的路由器后由于经过了NAT
    转换,就变成了10000
    以上的,假设是第一个人被分配的是4000
    那么经过路由器后会改成10000,
    第二个人被分配的是4000,
    那么经过路由器后会改成10001,
    基本上有下面的对应关系:
    4000-10000
    4001-10001
    这是在同一台机器时的情况,
    如果是两台机器,那么很有可能都是4000,
    但是两人的IP地址不一样,所以不会出现冲突:
    (192.9.200.101,4000)----(12.1.1.1,10000)
    (192.9.200.102,4000)----(12.1.1.1,10001)
    (192.9.200.103,4000)----(12.1.1.1,10002)
    (192.9.200.103,4001)----(12.1.1.1,10003)
    ……
    192.9.200.101,192.9.200.102,192.9.200.103是局域网内的三台机器,
    它们的网关缺省值是192.9.200.91;而192.9.200.91是路由器以太口的地址,
    12.1.1.1是广义口的地址,所以对QQ的服务器来说,它根本不知道有几个人,
    而是认为所有的信息都来自12.1.1.1,
    添加其它用户时候肯定要将自己的IP
    地址跟PORT
    通知给服务器,不过也可能是服务器把你的IP跟PORT
    告诉给另外一个人的
    不知道我说的你明白没有
    我觉得QQ用TCP
    连接不太好,这样一来会占用大量的网络资源(每天上网的人不要太多哦),那其他一些TCP
    的服务还做不做事情啊?
    我现在正在做局域网内的QQ可以交流交流![email protected]
      

  6.   

    http://www.csdn.net/expert/topic/542/542524.xml?temp=.4055597
      

  7.   

    我很关心QQ的界面是如何实现的,希望高手们能给点启发。
    比如“我的好友”和“陌生人”之间的切换,是调用了两个不同CView还是一个属性页在翻页???
    恳请指教!