解決 s.connect((host, port)) TimeoutError: [WinError 10060] 由于連接方在一段時(shí)間后沒(méi)有正確答復(fù)或連接的主機(jī)沒(méi)有反應(yīng),連接嘗試失敗。

直接進(jìn)入正題。



今天在進(jìn)行一個(gè)socket編程時(shí),遇到了如題這樣的問(wèn)題。

image.png

這個(gè)問(wèn)題很常見(jiàn),有的是爬蟲(chóng)方面的,五花八門(mén)的,查了一圈發(fā)現(xiàn)沒(méi)有解決我的問(wèn)題的內(nèi)容,接下來(lái)就分享下我遇到的問(wèn)題和我的解決方案吧。

問(wèn)題背景

環(huán)境:win10,Pycharm,python

今天在進(jìn)行socket編程時(shí),遇到上圖的問(wèn)題。
我需要在本地客戶(hù)端與服務(wù)器端建立通信,簡(jiǎn)化后的情景如下:

服務(wù)器端程序:

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

import socket

hostname = socket.gethostname()
host = socket.gethostbyname(hostname)
# host = 服務(wù)器內(nèi)網(wǎng)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()

客戶(hù)端程序:

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

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "公網(wǎng)ip"
# host = 服務(wù)器公網(wǎng)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()

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

start

運(yùn)行客戶(hù)端程序(本地),一會(huì)兒出現(xiàn):

image.png

首先查看騰訊云安全組:

image.png

該端口是開(kāi)放的,一切正常。

那是什么原因呢?我在的博客中寫(xiě)過(guò),Ubuntu 服務(wù)器利用Apache 2搭建一個(gè)簡(jiǎn)單的網(wǎng)站。在安裝完Apache 2后,有一步是在UFW上允許Apache,會(huì)不會(huì)是防火墻沒(méi)有開(kāi)放端口呢?

ssh連接到服務(wù)器
輸入:

sudo ufw status
image.png

發(fā)現(xiàn)Apache已經(jīng)在運(yùn)行中,但是服務(wù)器UFW并沒(méi)有允許預(yù)期端口8080,此時(shí),我們開(kāi)放8080端口。

sudo ufw allow 8080
image.png

再次查看UFW狀態(tài):

image.png

可以看到8080端口已經(jīng)開(kāi)放了。

再來(lái)試試之前的程序。

服務(wù)端:

image.png

客戶(hù)端:

image.png

類(lèi)似的,實(shí)現(xiàn)多個(gè)客戶(hù)端與服務(wù)端通信等等其他功能也可以相繼展開(kāi)了。

對(duì)于UFW,開(kāi)啟和關(guān)閉防火墻:

sudo ufw enable|disable

查看防火墻狀態(tài)

sudo ufw status

開(kāi)啟和禁用端口如下:

sudo ufw allow|deny [service]



至此,我的問(wèn)題解決了,標(biāo)題問(wèn)題出現(xiàn)的原因可能有很多,這里是我個(gè)人遇到我的問(wèn)題,以及自己的解決方案,解決了自己的問(wèn)題,對(duì)于同樣的問(wèn)題有可能就不適用了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 來(lái)源:https://www.linuxidc.com/Linux/2018-06/152881.htm 正確配置...
    FsdSoyu閱讀 1,964評(píng)論 1 0
  • 端口:0 服務(wù):Reserved 說(shuō)明:通常用于分析操作系統(tǒng)。這一方法能夠工作是因?yàn)樵谝恍┫到y(tǒng)中“0”是無(wú)效端口,...
    蕭玄辭閱讀 1,286評(píng)論 0 2
  • LInux原始的防火墻工具iptables由于過(guò)于繁瑣,所以u(píng)buntu系統(tǒng)默認(rèn)提供了一個(gè)基于iptable之上的...
    很少更新了閱讀 9,542評(píng)論 0 4
  • 總結(jié): 1.首先安裝JDK和tomcat以及布置好環(huán)境變量: http://m.itdecent.cn/p/2...
    風(fēng)云再現(xiàn)111閱讀 329評(píng)論 0 0
  • 一 趙家莊安靜的午后,綠柳環(huán)繞的場(chǎng)院(打谷場(chǎng))上,傳來(lái)一陣陣嬉笑和吵鬧聲。幾個(gè)孩子正在舉行一場(chǎng)足球比賽,雖然只有六...
    憶川閱讀 762評(píng)論 0 0

友情鏈接更多精彩內(nèi)容