请问如何让一个外网的电脑和内网的电脑通讯?(100分)

  • 主题发起人 主题发起人 summax
  • 开始时间 开始时间
S

summax

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好我是一个菜鸟,我现在用indy组件写了一个测试程序. 一个服务器和一个客户端.服务器是在外网上有固定IP. 客户端在内网(通过路由上网). 客户端发消息到服务器端,服务器端能收到.但是我现在不知道怎么样发消息到客户端了? 因为客户端没有外网IP. 有什么方法让发消息到客户端呢? 请各位大侠教教我吧..
 
客户端有个ip吧?
 
啊啊啊啊啊,
 
客户端IP是内网IP.
 
在局域网内部首先连接外网的程序,外网的程序就可以得到IP和端口,然后就可以连接

举例:
使用NMUDP构件, 内网程序发一个消息给外网程序,外网程序的OnDataReceived事件就
可以获得 FromIP: string; Port: integer, 然后外网程序就往那个FromIP和Port发消
息, 内网程序就可以获得数据了
 
这样好象不能.我是这样做的. 用的是 indy 的UDPClient和UDPServer 组件.
其中服务端用UDPServer组件.客户端用 UDPClient 组件.
1.比如服务端 IP是: 218.17.92.175 端口: 3000
2.客户端IP是: 192.168.0.150 端口: 3000 (通过ADSL路由上网)

3.客户端发消息到服务器端.在服务器端收到消息后得到的客户端 IP 是 219.24.165.21(这并不是我真正在客户端IP地址,但是我又不能在路由器上做任何设置!!)
4.所以服务器端发送消息到客户端.客户端就收不到消息??有什么方法能让客户端收到吗??

 
你留意一下你的第3点。
服务端收到消息后,除了得到客户端的IP是219.24.165.21外,还会得到客户端的端口,
这个端口肯定不是3000的,你就往“219.24.165.21:获得的端口”发送数据, 客户端就
可以收到信息了
 
谢谢问题解决!可以交个朋友吗? 我的QQ: 53417693
 
后退
顶部