我有一个套接字程序,需要打开端口1002,我想知道如何在Windows上用C ++移植,这样我可以自由使用这个端口吗?
答案 0 :(得分:6)
端口转发在客户端系统的上游完成,通常在路由器上完成。
我相信有些应用程序使用通用即插即用功能与上游路由器进行通信,公开开放端口,但你必须做大量研究才能看到它是如何完成的:我没有丝毫。
答案 1 :(得分:3)
因此,您需要UPnP或NAT-PMP。您的系统可能具有用于执行这些协议的库,或者您可以使用muniupnp,它具有在Linux或BSD盒上运行的服务器以进行测试,以及客户端库。
无法保证可行,因此您可能需要更进一步并使用STUN,TURN或ICE。有一个用于执行这些事情的库here。
永远记住,有时候这是不可能的。同时实现IPv6,有时在IPv4没有时也可以。鼓励用户安装v6和Teredo。
答案 2 :(得分:1)
从Windows XP开始,Microsoft提供UPnP library。使用它实际上相当复杂,因为库只提供与网络设备通信的基础知识。您必须研究各种UPnP specifications才能执行特定于设备的任务,例如端口转发。相信我,要完成相对较少的工作需要付出很多努力;最好将它放在您的文档中,用户可能需要查阅其路由器手册才能转发必要的端口。几乎每个人都这样做。
答案 3 :(得分:0)
我认为最流行的方法是编写文档,告诉用户在防火墙上打开哪些端口。
答案 4 :(得分:-1)
您无法使用编程语言向前移植,这是在路由器上设置的内容。