我仔细观察了一下,在传文件的时候,两个机子是直接连的。
   但是,两个QQ客户都是通过网关出去的,在网上显示的地址是网关的地址。彼此之间的连接是不能直接建立的,彼此之间绝对不能通讯的。   那么我想这个连接一定是A用户和B用户分别和QQ服务器建立连接之后,然后由QQ服务器把这两个连接搞成一个连接,然后两个机子才开始通讯的。   但这些都是我的猜测,不知道哪个高人能具体说一下思路,以及怎么实现,谢谢。

解决方案 »

  1.   

    qq走的是udp协议,但在传送文件的时候还是要建立点对点的tcp协议连接
    因为qq有第三方即服务器参与 所以可以知道对方位置 而单纯点对点 难度较大
      

  2.   

    对服务器而言,它就是给两者建立了一个TCP连接,至于传文件行不行它可不管,所以以前我和朋友就会出现“不在同一个防火墙内”的错误。至于通过网关不奇怪啊,QQ既然可以连接到腾讯的服务器,当然也可以连接到其他的地方,也许腾讯的服务器有可能也是通过网关连出来的呢。
      

  3.   

    点对点协议PPP是标准通用协议,需要协议栈的支持,大概的意思就是需要系统支持吧。或者安装协议包。
    ------------------
       点对点协议 (PPP)(RFC1661) 是一组允许来自不同供应商的远程访问软件交互操作的标准协议。启用 PPP 的连接可以通过任何工业标准 PPP 服务器拨入远程网络。 
      

  4.   

    refer to
    http://www.comprg.com.cn/wz10.htm
    http://www.5xsoft.com/data/200107/0716201401.htm
      

  5.   

    同意jennyvenus() 
    qq用的是那种不可靠的udp协议,
    不过,具体如何建立连接没有想过,看大家的看法吧
    关注中
    up
      

  6.   

    关键就是如何通过一个有ip的服务器帮助两个没有ip的主机建立连接啊
      

  7.   

    首先你的服务器要有一个消息是连接其它IP地址用的服务器读取这消息后存放到一个数组中如果再次有这类型的消息检索数组中是否有要连接的IP
    如果有发一个消息给这IP
    客户机读取这类的消息后,开始建立连接。。思路应该是差不多吧
      

  8.   

    套接字是唯一的,通过网关的套接字是网关ip+网关端口(网吧内的机器都有共同的ip,但端口号不一样),只要发往这个代表某台机器的套接口就行了