路由器通过IP将自己暴露给外界66.249.89.104
,许多主机可以连接到它以形成局域网。
我的问题 :
有没有办法识别该局域网中的特定主机?
我所尝试的只是一些猜测,但毫无疑问会失败:
ping [email protected]
Ping request could not find host [email protected]. Please check the name and try again.
我认为,由于 LAN 中的每个主机都可以从路由器外部获取数据包,因此必须有一种方法来识别每个主机,但那是什么呢?
更新 如何实现转发端口除了在路由器上配置吗?
更新
现在我认为即插即用是可行的方法,但是有没有可行的示例?
答案1
您无法启动与路由器的连接。内部主机必须首先将端口转发到自身,然后侦听该端口。
即插即用是设置端口转发的方法。然后您必须解决使用哪个端口的问题,如果您想与同一 NAT 后面的多个客户端通信,它们不能都使用同一个端口,因此您需要某种方法来知道哪个客户端正在使用哪个端口。客户端可以在中央服务器上列出自己,这通常是实现此目的的方法(例如,在大厅中列出游戏服务器,主服务器会跟踪 IP/端口,以便其他所有人都可以连接)
通过 Google 快速搜索,你找到了一个值得一试的 C++ UPnP 库:
http://www.koders.com/cpp/fid2A3FF8255A7B67758E80E0423AA46F9DD8FD734A.aspx?s=setwindowshookex
以及 Windows UPnP API:
http://msdn.microsoft.com/en-us/library/aa382303%28VS.85%29.aspx