ربط خادم TCP بمحول معين
-
19-09-2019 - |
سؤال
كيف يمكنني تحديد المحول الذي يجب أن يبدأ الاستماع إليه؟
لدي تطبيق يعمل على جهاز كمبيوتر يحدث أن يكون لديك محولات شبكة 2 تعمل على الشبكات الفرعية المختلفة (شبكة واحدة للبنية التحتية لشبكة 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
المحلول
ذلك يعتمد على الخاص بك LocalIP
. وبعد يمكنك تعيينه إلى "0.0.0.0" للاستماع إلى جميع الواجهات، أو يمكنك تعيينه للاستماع إلى واجهة محددة.
في التعليمات البرمجية الخاصة بك، قمت بتعيينه على عنوان IP الأول لاسم المضيف الخاص بك. التي قد لا تعمل دائما على الرغم من.