-1

我想从路由器ip到本地ip如何进行端口转发?在 c# 中,我有这个代码用于使用本地 ip 接收

r.Bind(new IPEndPoint(IPAddress.Any, int.Parse(this.textBox2.Text)));
while (true)
            {
                br = new byte[16384];
                r.Receive(br);
                m_Fifo.Write(br, 0, br.Length);
            }

其中 br=buffer , textbox2 = local , ip r socket 我尝试在这个线程中使用代码但我无法连接它们C# Raw Sockets Port Forwarding

4

2 回答 2

0

端口转发在您的路由器配置中处理。每个端口转发规则必须手动设置,通过路由器的 Web 界面、telnet/SSH 界面或路由器附带的一些其他软件。

没有通用方法可以从 C# 应用程序在路由器上创建端口转发,除非您通过 HTTP/Telnet/SSH 连接到它并传递必要的命令来创建规则。我不建议你这样做。

此外,当您更改这些设置时,某些路由器需要重新启动,并且您可能需要等待最多 5 分钟才能完全恢复网络/Internet 连接。

无论哪种方式,即使您找到了这样做的方法,从您的 C# 应用程序中修改您的路由器配置也可能是一个非常糟糕的主意。

也许您可以澄清为什么要转发端口?也许有一个替代解决方案。

于 2011-02-28T02:16:44.020 回答
0

你的代码也是错误的。您需要检查 EOS 的 read() 结果,然后中断,或者将结果传递给 write 调用。您不能假设读取填充了缓冲区。

当然,每次迭代分配一个新的 byte[] 缓冲区也是非常浪费的。

于 2011-02-28T02:22:44.497 回答