解決 s.connect((host, port)) TimeoutError: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。


直接進入正題。



今天在進行一個socket編程時,遇到了如題這樣的問題。

image.png

這個問題很常見,有的是爬蟲方面的,五花八門的,查了一圈發現沒有解決我的問題,接下來就分享下我遇到的問題和我的解決方案吧。


問題背景

環境:win10,Pycharm,python

今天在進行socket編程時,遇到上圖的問題。
我需要在本地客戶端與服務器端建立通信,簡化后的情景如下:

服務器端程序:

# -*- coding: utf-8 -*-

import socket

hostname = socket.gethostname()
host = socket.gethostbyname(hostname)
# host = 服務器內網ip
port = 8080
# 端口
web = socket.socket()
web.bind((host, port))
web.listen(5)
print("start")
while True:
    conn, addr = web.accept()
    data = conn.recv(1024)
    print(data)
    conn.sendall(b'hello')
    conn.close()

客戶端程序:

# -*- coding: utf-8 -*-

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "公網ip"
# host = 服務器公網ip
port = 8080
# 端口
s.connect((host, port))

send_data = input("input:")
s.send(send_data.encode())
rec_data = s.recv(1024).decode()
print("close scoket", rec_data)
s.close()

先運行服務器端程序(使用Pycharm ssh連接到服務器):

start

運行客戶端程序(本地),一會兒出現:

image.png

首先查看騰訊雲安全組:

image.png

該端口是開放的,一切正常。

那是什么原因呢?我在的博客中寫過,Ubuntu 服務器利用Apache 2搭建一個簡單的網站。在安裝完Apache 2后,有一步是在UFW上允許Apache,會不會是防火牆沒有開放端口呢?

ssh連接到服務器
輸入:

sudo ufw status

image.png

發現Apache已經在運行中,但是服務器UFW並沒有允許預期端口8080,此時,我們開放8080端口。

sudo ufw allow 8080

image.png

再次查看UFW狀態:

image.png

可以看到8080端口已經開放了。

再來試試之前的程序。

服務端:

image.png

客戶端:

image.png

類似的,實現多個客戶端與服務端通信等等其他功能也可以相繼展開了。

對於UFW,開啟和關閉防火牆:

sudo ufw enable|disable

查看防火牆狀態

sudo ufw status

開啟和禁用端口如下:

sudo ufw allow|deny [service]


至此,我的問題解決了,標題問題出現的原因可能有很多,這里是我個人遇到我的問題,以及自己的解決方案,解決了自己的問題,對於同樣的問題有可能就不適用了。


免責聲明!

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



猜您在找 Scrapy,終端startproject,顯示錯誤TimeoutError: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 關於([WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。)的解決方案 問題解決:URLError urlopen error [WinError 10060]由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗 Failed to establish a new connection: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗 TensorFlow實現Softmax Regression識別手寫數字中"TimeoutError: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗”問題 Python操作FTP時,TimeoutError: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 FTPIT技術疑難雜症 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗問題 requests超時重試方法(由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗) requests超時重試方法(由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗) Python爬蟲報錯-Timeouterror:[WinError 10060]由於連接放在一點時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM