簡體   English   中英

嘗試連接到服務器時出現錯誤非阻塞 (10035) 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM