C# で記述されたデスクトップ アプリケーションでポート フォワーディングを実行する必要があります
私はこのコードを使用しました:
using System;
using System.Threading;
using NATUPNPLib;
namespace iSpyApplication
{
public static class NATControl
{
public static UPnPNAT NAT = new UPnPNAT();
private static IStaticPortMappingCollection _mappings;
public static IStaticPortMappingCollection Mappings
{
get
{
if (_mappings==null)
{
try
{
if (NAT.NATEventManager != null)
_mappings = NAT.StaticPortMappingCollection;
}
catch
{
}
}
return _mappings;
}
}
public static bool SetPorts(int wanPort, int lanPort)
{
bool b = false;
int i = 3;
while (Mappings == null && i > 0)
{
Thread.Sleep(2000);
i--;
}
if (Mappings != null)
{
try
{
Mappings.Remove(wanPort, "TCP");
}
catch (Exception ex)
{
// do something
}
try
{
Mappings.Add(wanPort, "TCP", lanPort, internalIP, true, "iSpy");
b = true;
}
catch (Exception ex)
{
// do something
}
}
return b;
} // method
} // class
} // namespace
linksys ルーターで UPnP が有効になっている
コードは実行されており、エラーや例外は発生していませんが、マッピングは行われていません。
ここに私がそれをテストする方法があります:
- 8080 などの内部ポートをリッスンするアプリケーションがあります。
ルーターに手動でマッピング エントリを追加します。
アプリケーション: HTTP 、外部ポート 8080 、内部ポート 8080、プロトコル: TCP 、内部 IP 、有効
ブラウザで次の URL を要求します: http : // publicIP : externalport /
- アプリケーションは内部ポートでソケットを受信し、メッセージで応答します。
マッピング エントリを削除し、プログラムで追加してみます
- 同じ
- マッピングを実行するコードを実行します
- 同じ
ブラウザに次のメッセージが表示されます。
つなげられない
Firefox が publicIP:externalPort でサーバーへの接続を確立できない
マッピングを実行する C# コードを検索しましたが、それらはすべて同じように見えます。マッピングが失敗するのはなぜですか? 前もって感謝します