如何让IdTCPServer&IdTCPClient的应用穿透NAT
答案:2 悬赏:30 手机版
解决时间 2021-03-25 11:33
- 提问者网友:美人性情
- 2021-03-25 07:04
如何让IdTCPServer&IdTCPClient的应用穿透NAT
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-03-25 07:34
让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,代码如下:
procedure 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大不一样。
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,代码如下:
procedure 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大不一样。
全部回答
- 1楼网友:旧脸谱
- 2021-03-25 08:07
进入vSphereclient,关闭需要克隆的虚拟机win72、选中ESXi服务器主机,在右侧点击“配置”选项卡,选择存储器,右侧的存储器名称上点右键,选择“浏览数据存储”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯