我一直对QQ能不通过服务器中转而达到两上内网用户而很好奇.在前面的贴子上也有前辈说过是通过一台有公网的服务器来记录IP和端口.但是怎么实现呢一直不明白.
今天动手做了一个例子.首先从A机客户端发消息到C机服务端. 
C服务端收到消息并提取他对方A的IP和port 就是那个 abinding.peerip 和peerport
为了方便操作最好将那个 peerip 和 peerport 显示出来.因为下面要用到的.
udpclient1.host:=127.0.0.1;
udpclient1.port:=8090;
udpclient1.send('test');
XIP:=abinding.peerip;
Xport:=abinding.peerport;用另一个B机客户端发消息到A机  peerIP 并且 端口是  peerport 这样就行了.
udpclient2.host:=xip;
udpclient2.port:=xport;
udpclient2.send('hi');  or udpclient2.SendBuffer(buffer,size);但是这个消息需要A机自己去接收.  udpclient1.ReceiveString(-1);  or udpclient.ReceiveBuffer(buffer,size,-1);
我想在公网上这样也应该是可行的.

解决方案 »

  1.   

    公网和局域网是有差别的,在公网上如果两端都是公网的一端(不是能过代理)和局域网没多大差别,如果有一端或两端都是代理上网的话就没这么简单了,需要登录服务器取通信端口才能正确发送信息。我总觉得QQ的Http代理是通过服务器中转换的,不知是不是
      

  2.   

    我想Http代理应该是通过服务器转换,不然不行的。
      

  3.   

    我看到 indydemo 下面有个关于遂道(Tunnel)的例子很是不错.那个 HTTP 是否也是用这个实现啊.