[英]Getting error non-blocking (10035) error when trying to connect to server
我試圖簡單地將列表從一台計算機發送到另一台計算機。
我在一台計算機上設置了我的服務器,其中 IP 地址為 192.168.0.101 服務器的代碼:
import socket
import pickle
import time
import errno
HEADERSIZE = 20
HOST = socket.gethostbyname(socket.gethostname())
PORT = 65432
print(HOST)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(10)
while True:
conn, adrs = s.accept()
print(f"Connection with {adrs} has been established")
conn.setblocking(1)
try:
data = conn.recv(HEADERSIZE)
if not data:
print("connection closed")
conn.close()
break
else:
print("Received %d bytes: '%s'" % (len(data), pickle.loads(data)))
except socket.error as e:
if e.args[0] == errno.EWOULDBLOCK:
print('EWOULDBLOCK')
time.sleep(1) # short delay, no tight loops
else:
print(e)
break
客戶端在另一台計算機上。 編碼:
import socket
import pickle
HOST = '192.168.0.101'
PORT = 65432
def send_data(list):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10)
print(".")
print(s.connect_ex((HOST, PORT)))
print(".")
data = pickle.dumps(list)
print(len(data))
s.send(data)
s.close()
send_data([1,1,1])
connect_ex 的輸出錯誤號是 10035。我閱讀了很多關於該錯誤的信息,但我發現的只是服務器端。 對我來說,問題出在客戶端並且無法連接到 192.168.0.101。 但是,我不明白為什么我得到的錯誤是關於非阻塞的。
我無法發送數據是我做錯了什么?
如此處所述Python 中的套接字編程引發錯誤 socket.error:< [Errno 10060] 連接嘗試失敗我試圖運行我的服務器並連接到私有 IP 地址。
修復方法是:在服務器端,在 s.bind 中,將主機部分留空
HOST = ''
PORT = 65432
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
在客戶端,使用運行服務器的 PC 的公共 IP(我從 ip4.me 獲得)
HOST = 'THE PUBLIC IP' #not going to write it
PORT = 65432
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, PORT))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.