让IdTCPServer&IdTCPClient的应用穿透NAT
2012-02-20 11:26
85 查看
让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大不一样。
相关文章推荐
- 如何让IdTCPServer&IdTCPClient的应用穿透NAT?
- delphi idtcpserver&idtcpclient 演示
- ($_SERVER['REMOTE_ADDR'])和($_SERVER['HTTP_CLIENT_IP'])的区别
- how to config the tftpd-hpa server in the ubuntu using for remote tftp client '-p' and '-r' command
- linux 装机宝典之一TFTP安装(server&client)
- Linux网络编程socket的简单应用(基于server和client 的tcp)
- IdTCPClient和IdTCPServer主要属性
- Delphi笔记-Indy10.5.5 IdTcpServer 与 IdTcpClient Demo
- lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver
- Java 在Client/Server 网络中的应用
- 分享一个支持TCP&UDP穿透的商业应用的P2P组件
- Redis2.2.2源码学习——Server&Client链接的建立以及相关Event
- 基于Selector+Channel+线程池的server & client
- Spdylay - SPDY C Library & SPDY Client & SPDY Server & SPDY Proxy
- (华为)路由器PPPoE_Client、PPPoE_Server、Nat_Easy 配置
- HttpClient应用案例post&get方法
- ubuntu git server & client
- J2EE工具类:ClientSocketUtil.java&ServerSocketConnection.java