質問

をどのように私がリスニングを開始するアダプターを指定することができますか?

私は(、ビジネスLANインフラストラクチャのためのTCPカメラ用のものを一つのネットワーク)の異なるサブネット上で実行されている2つのネットワークアダプタを持っているために起こるPC上で動作するアプリケーションを持っている。

私は、TCPサーバを開き、LAN上のクライアントから入ってくる接続のために特定のポートでリッスンするクラスを持っています。

問題は、私のTCPサーバークラスを初期化とは、カメラに接続されたアダプタでリッスンを開始していることです。ビジネスLANから入ってくる任意の接続要求は、それが処理されていない、失敗します。

質問は、をどのように私がリスニングを開始するアダプターを指定することができますか?

以下のコードの抜粋(これは、単に主要なメソッド完全なクラスではありません)。

Public Sub New(ByVal Name As String)
            'get config
            _bootStrap = New TCPServerBootstrap(Name)
            'start log file
            _Trace = New ACS.Utility.Logging("Connectivity." & Name & ".TcpServer." & _bootStrap.Port)
            _Trace.WriteLog("TCP Server Starting")
            Dim LocalIP As System.Net.IPAddress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0)
            _myListener = New TcpListener(LocalIP, _bootStrap.Port)
            _Timer = New System.Timers.Timer
            _Timer.Interval = 500
            _Timer.Enabled = False
            _name = Name
            _details = _myListener.LocalEndpoint.ToString
        End Sub

    Public Sub BeginListening()
            'Starts the listener and uses the Asynchronous 'Begin' method to handle inbound connection attempts
            _Trace.WriteLog("Begin Listening on: " & _myListener.LocalEndpoint.ToString)
            _myListener.Start()
            _myListener.BeginAcceptSocket(New AsyncCallback(AddressOf HandleIncomingConnectionRequest), _myListener)
        End Sub
役に立ちましたか?

解決

それはあなたのLocalIPに依存します。あなたはすべてのインターフェイス上でリッスンするように「0.0.0.0」に設定することができ、またはあなたはそれが特定のインターフェイス上でリッスンするように設定することができます。

あなたのコードでは、あなたのホスト名の最初のIPアドレスに設定します。これは必ずしもいえ動作しない場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top