我想用c#进行端口转发

时间:2011-02-28 00:02:45

标签: c# sockets port forwarding

我想从路由器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 =缓冲区,textbox2 = local,ip r socket 我尝试在此线程中使用代码,但我无法连接它们C# Raw Sockets Port Forwarding

2 个答案:

答案 0 :(得分:0)

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

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

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

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

也许您可以澄清为什么要转发端口?也许还有另一种解决方案。

答案 1 :(得分:0)

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

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