關於單機出現這種問題不多贅述,主要闡述服務機和客戶機出現這種問題的解決辦法。
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則問題解決。