私は ZeroMq と NetMQ に基づく通信を使用しています (両方のプロジェクトで同じ問題)
ファイアウォールの背後でアプリケーションを実行していますが、
サーバー側では、受信トラフィック用に開くポートを簡単に定義できます。
ただし、クライアント側では、ターゲット(別名サーバー)のアドレスとポートのみを指定できるようです。
クライアント アプリでアウトバウンド トラフィックに使用するポートを定義することは可能ですか。
たとえば(NetMQで)
using (NetMQContext ctx = NetMQContext.Create())
{
using (NetMQSocket snapshot = ctx.CreateSocket(ZmqSocketType.Dealer))
{
// connect to remote address, no place to specify outbound port
snapshot.Connect("192.168.1.10:5555");
}
}
単純な通信シナリオでは、サーバーとクライアントがあります
サーバーはマシン A (192.168.1.10) で実行されており、ポート 5555 でリッスンしています。
クライアントはマシン B (192.168.1.9) で実行されており、サーバー (A) への通信を開始しています。
クライアントの通信情報を見ると、システムがポート XXXXX (たとえば 51234) を割り当て、そのアウトバウンドが 192.168.1.10:5555 に割り当てられていることがわかります。
ほとんどの場合、XXXXX ポートはシステムによって割り当てられます (空きポート) が、いくつかの極端なケースでは、XXXXX ポートは特定のポートである必要があります (極端なセキュリティ環境のため)。