永发信息网

如何让IdTCPServer&IdTCPClient的应用穿透NAT

答案:2  悬赏:30  手机版
解决时间 2021-03-25 11:33
如何让IdTCPServer&IdTCPClient的应用穿透NAT
最佳答案
让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大不一样。
全部回答
进入vSphereclient,关闭需要克隆的虚拟机win72、选中ESXi服务器主机,在右侧点击“配置”选项卡,选择存储器,右侧的存储器名称上点右键,选择“浏览数据存储”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
汽车后钢板弹簧如何拆卸?
美国人死了用不用棺材?
什么是无人机陀螺仪?
以《送东阳马生序》中的宋濂,我的快乐,写首
和女朋友变成了朋友
小区里面捡到一只狗 求懂狗的大师看看是不是
iphone6值不值得买?
女生初次约会见面觉得男生帅 会有哪些表现
单选题在氯化钾、氯酸钾、氯化氢三种溶液中A.
x战警2是金刚狼2吗
行动计划怎么写?
义县到青岩寺大概多少公里
跳槽太频繁了好不好?
已知某重金属化合物能催化H2O2的分解.下图是
小鹅苗需要睡觉吗
推荐资讯
九尾狐姐姐传的音乐原声
当今全世界最有影响力的体育运动是什么呢?
百度一下郫县县名有多久历史
跪求继承者们的MKV版本下载链接,望解答!谢
该怎么准备初级会计职称考试呢?
七月半鬼节,能看到鬼吗?
江苏标龙建筑有怎么样
宿州界沟煤矿在哪里?在淮北市或者宿州市怎么
地上车位如何分配才合适
英语统考如何能通过
台州锦江百货是租金还是按抽成算?
易企CMS与Z
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?