[英]Connection issue in win7 using vb.net socket programming
我正在vb.net中使用套接字編程來創建服務器客戶端遠程應用程序。 當我在Win 7框中同時使用客戶端和服務器時,會出現問題。 對於win xp或跨平台通信(例如win xp贏7),它工作正常。 以下是客戶端和服務器端使用的代碼:
客戶:
Dim ips As IPAddress()
ips = Dns.GetHostAddresses(HostName)
For index = 0 To ips.Length - 1
Next index
================================================== =========
private sub sendFile(byval ip as string)
Dim client As TcpClient = Nothing client = New TcpClient(ips(index).ToString, 8000)
'Code to send file
End sub
服務器:
Dim Listener As TcpListener = Nothing
Listener = New TcpListener(IPAddress.Any, 8000)
Listener.Start()
Dim client As TcpClient = Nothing
Dim netstream As NetworkStream = Nothing
If Listener.Pending() Then
client = Listener.AcceptTcpClient()
netstream = client.GetStream()
在win 7上同時運行客戶端和服務器時,將引發以下錯誤:
連接嘗試失敗,因為一段時間后連接方未正確響應,或者建立連接失敗,因為連接的主機未能響應
請幫助我找出問題所在。 是win 7擁有的權限級別嗎?
如果您考慮在c#中執行此操作,是否已簽出開源通信框架networkComms.net? 試圖重新發明輪子沒有意義。
以下是問題和解決方案:
問題:
Win 7隨附ip v6。 因此,每當我們使用Dns.GetHostAddresses(hostname)時,它都會返回與主機關聯的所有IP地址(ip v4和ip v6)。 將此ip v6地址與ip v4兼容性功能一起使用會產生問題。
解決方案:
每當使用Dns.GetHostAddresses(hostname)時,請檢查ip v4。
if (ObjTemp.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString())
希望這對其他從事套接字編程的人有所幫助。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.