没有第三方服务的话,两台处在不同局网中的电脑不可能直接连通,微软的P2P技术也是在美国架设了一台服务期.
其实关键在于要建立起连接:而连接的过程是由第三方服务器负责解析双方的地址.
局域网里的机器,相当于在IPv4上在增加一个地址,直接使用TCP是无法寻址的.必须通过服务器去查找.
另转贴:
///////////////////////////////////////////////////////////////
1:两个ADSL,
2:一个ADSL,一个小区宽带(联通)
3:一个小区宽带(联通),一个广电宽带(有线电视)
你说三种环境我都没试过,我想应该可以,试试吧。我当时的环境是一台拨号上网作server S,一台接联通专线,一台接网通专线。
server S的IP可以到:
http://ip.loveroot.com/
获得。在实际的环境中Server S需要固定IP。测试就无所谓了,测试期间是固定就可以了。
测试程序你就直接用d5 的那个udp demo吧。
把NMUDP1DataReceived事件稍作修改一下,把远程端口也显示出来。
Memo1.Lines.Add(FromIP+' '+inttostr(port)+': '+TmpStr);//这句被我改过。
测试过程可以:
在server S上运行udp demo(假设server S 的固定IP是218.104.220.110(这IP不是我的,大家别攻击啊,我随便写的。),绑定端口6767)
在A、B上也运行udp demo
Client A向218.104.220.110:6767发数据
Server S 得到A的通讯IP和端口
Client B向218.104.220.110:6767发数据
Server S 得到B的通讯IP和端口
OK,这时A、B就可以用server S得到的对方的IP和端口通讯了。同时向对方发数据吧,多尝试几次。