【发布时间】:2024-01-09 11:43:01
【问题描述】:
我想用 C# 编写一个程序,将特定端口从路由器转发到计算机。这可能吗?
【问题讨论】:
-
查看 UPnP:en.wikipedia.org/wiki/Universal_Plug_and_Play 应该有可用的 C# UPnP 库。
我想用 C# 编写一个程序,将特定端口从路由器转发到计算机。这可能吗?
【问题讨论】:
不,不可能
端口转发是网络设备连接网络中所有其他计算机的任务。一旦数据包离开路由器,它就无法控制它。
此外,除非您从路由器转发端口,否则内部局域网中的计算机无法获取该数据包,并且根本不存在转发问题。
【讨论】:
可以使用 NATUPnP 1.0 类型库 (NATUPNP.DLL) 或第三方库(如 Mono.Nat)使用 UPNP(假设您的设备支持该技术)转发端口。
如果您想在没有 UPNP 的情况下执行此操作,那么这将相当困难,因为您需要找到需要发送到设备(路由器)的消息类型以模拟用户添加端口。
对于Mono.Nat,您可以在UPNP port forwarding – The easy way 找到一个示例
对于NATUPnP,.NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play) 有一个示例
【讨论】: