如何让IdTCPServer&IdTCPClient的应用穿透NAT
发布网友
发布时间:2024-10-01 08:03
我来回答
共2个回答
热心网友
时间:2024-12-06 04:42
让IdTCPServer&IdTCPClient的应用穿透NAT?
2007-03-15 22:35:28| 分类: delphi程序备忘 |字号 订阅
IdTCPServer拥有公网IP和开放的端口,
IdTCPClient位于NAT之后,没法端口映射,
但是由IdTCPClient主动发起连接,连接之后互相传递文件.
在IdTCPClient的属性里BoundIP和BoundPort不用填,使用如下代码就能穿透NAT连接IdTCPServer:
IdTCPClient.Host := ‘0.0.0.0’;//IdTCPServer公网IP
IdTCPClient.Port := 0; //IdTCPServer的端口
try
IdTCPClient.Connect();
except
IdTCPClient.Disconnect;
exit;
end;
要注意的是,IdTCPServer一定要在拥有公网IP的机子上运行,这样可以使得世界任何地方的电脑用上述代码就能跟IdTCPServer相连接,
连接上后,可以用IdTCPServer的OnConnect取得IdTCPClient经过NAT转换后的IP和Port,代码如下:
procere TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
IP := AThread.Connection.Socket.Binding.PeerIP ;
Port := AThread.Connection.Socket.Binding.PeerPort;
end;
使用IdTCPServer的OnConnect获得的IP和Port才能与IdTCPClient通讯。
你会发现OnConnect里获得的IP和Port和未经过NAT转换后的IdTCPClient的机子的IP和Port大不一样。
热心网友
时间:2024-12-06 04:43
进入vSphereclient,关闭需要克隆的虚拟机win72、选中ESXi服务器主机,在右侧点击“配置”选项卡,选择存储器,右侧的存储器名称上点右键,选择“浏览数据存储”