私は、すべてがうまく機能するWCFを使用して通信するクライアント/サーバースタイルのアプリケーションを持っています。アプリケーションの機能の 1 つは、クライアント マシンからサーバー (Central Control) にファイルを取得することです。
Central Control は、クライアントの指定されたフォルダー内のファイルのリストを要求し、ソケットを使用してポートを開き、クライアントが各ファイルに接続してストリーミングできるようにします。ファイルごとに異なるポート番号を使用します。
これは、ローカルでテストするときは問題なく機能しましたが、お客様の環境にデプロイすると、次の例外が発生し始めました。
The requested address is not valid in its context
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at AMIGA.Library.TransferFile.listenerThread()
エンドポイントの IP アドレスは 10です。。* 住所。私は答えを求めてグーグルで検索しましたが、一般的なコンセンサスは、tcpListener では外部 IP アドレスとバインドできないというものでした。10とは思いませんでした.. .* アドレスは外部でした。
例外をスローするコードは次のとおりです。
tcpListener = New TcpListener(IEndPoint)
Dim handlerSocket As Socket
Dim thdHandler As Thread
tcpListener.Start()
RequestFile()
このジョブに TcpListener を使用する方法はありませんか? そうでない場合、どのような代替案があり、代替案を実装するのはどれほど簡単でしょうか。
ファイアウォールの構成に直接アクセスすることはできず、変更が実装されるまでに数週間かかる可能性があることに注意してください.