簡體   English   中英

使用vb.net套接字編程的Win7中的連接問題

[英]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? 試圖重新發明輪子沒有意義。

以下是問題和解決方案:

  1. 問題:

    Win 7隨附ip v6。 因此,每當我們使用Dns.GetHostAddresses(hostname)時,它都會返回與主機關聯的所有IP地址(ip v4和ip v6)。 將此ip v6地址與ip v4兼容性功能一起使用會產生問題。

  2. 解決方案:

    每當使用Dns.GetHostAddresses(hostname)時,請檢查ip v4。

     if (ObjTemp.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString()) 

希望這對其他從事套接字編程的人有所幫助。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM