我一直对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);
我想在公网上这样也应该是可行的.
今天动手做了一个例子.首先从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);
我想在公网上这样也应该是可行的.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货