c# 解決Socket問題——由於目標機器積極拒絕,無法連接


關於單機出現這種問題不多贅述,主要闡述服務機和客戶機出現這種問題的解決辦法。

1.檢查防火牆

這種問題出現的最多,特別是你的服務機還是買的各家的雲產品,比如阿里雲就是到防火牆中添加出入站規則,Azure則是有個對應的出入站配置。將你的TCP和UDP對應使用的端口打開。如果覺得麻煩可以將1—65535端口都打開這里特別說下Azure會定期檢查你的服務機的不安全行為,可能回擅自將你打開所有端口的配置刪除。具體操作不贅述,網上一大堆添加防火牆規則的教程。

2.檢查服務機端口是否被占用。(意義不大)

第二種問題的幾率很小,因為你的服務端程序起來的時候如果端口被占用或直接報錯。所以如果起來,但是沒報錯,基本不會是端口占用問題,不過以防萬一可以打開cmd,使用"netstat -an"命令查看活動的端口號,看看自己的服務器端口是否正在被監聽。

3.套接字綁定ip問題

目前網上大多數demo的寫法都是綁定的"127.0.0.1"這是非常不正規的寫法,因為是大多都是單機demo,不會出現問題,但是一旦分開就暴露出來了,所以正規的寫法應該"你的Socket套接字對象.Bind(new IPEndPoint(IPAddress.Any, port));"

將127.0.0.1改成IPAddress.Any則問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM