UDP通讯获取对方外网ip的问题。
情况是这样的,我需要把upd包从外网发给我的服务器,然后服务器返回一个确认信息。我的服务器在内网上。(这个应该很容易理解吧……)
我写了一个程序,在服务器上侦听11000端口,并且在路由器上已经作了一个端口映射把外网的11000端口映射到内网端口上。
但是我用 UdpClient.Receive() 方式得到的ip却是路由器的内网ip(例如192.168.0.1:20500)
(我原本的想法是可以从UDP包中获得对方的外网ip和端口号,然后往回发我的确认信息包。)
以下是部分代码:
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
UdpClient receivingUdpClient = new UdpClient(11000);
Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
Console.WriteLine("This message was sent from " + RemoteIpEndPoint.Address.ToString() + " on their port number " + RemoteIpEndPoint.Port.ToString() + "\n");
我不知道是否是我对UdpClient的方法使用不当,
或者有别的方法可以获得客户端的外网ip。
希望对此有研究或者有过类似经验的朋友给予我一点帮助,谢谢。 --------------------编程问答-------------------- up --------------------编程问答-------------------- mark --------------------编程问答-------------------- 如果對方也是在內網,你就算得到 IP 也沒法訪問。
UdpClient 有個 Send 方法,可以立即回復吧 --------------------编程问答-------------------- 使用UDP时,又想在不同内网内的机器可以相互访问,至少需要一个有独立IP的中间服务器(可以只起个连接作用,也可以是服务器)
因为首次连接时,双方只有通过这样才能实现“打洞”。就这些时间这上面有太多这样的帖子了。
补充:.NET技术 , C#