2010-01-06 5 views
0

수신 대기 할 어댑터를 어떻게 지정할 수 있습니까?TCP 서버를 특정 어댑터에 바인드

나는 응용 프로그램이 서로 다른 서브넷에서 실행이 네트워크 어댑터가 일어나는 PC에서 실행이 (비즈니스 LAN 인프라를위한 하나 개의 네트워크, TCP 카메라 하나)

나는 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 

답변

1

그것은 당신의 LocalIP에 따라 달라집니다. 모든 인터페이스에서 수신하려면 "0.0.0.0"으로 설정하거나 특정 인터페이스에서 수신하도록 설정할 수 있습니다.

코드에서 호스트 이름의 첫 번째 IP 주소로 설정합니다. 항상 작동하지 않을 수도 있습니다.

+0

감사합니다. Frunsi는 모든 인터페이스에서 수신 대기하도록 설정하면 문제를 잘 해결할 수 있습니다. 우수한! – GermanAndy

관련 문제