簡體   English   中英

Python客戶端套接字錯誤

[英]Python Client Socket Error

我有一個問題,我嘗試讓客戶端循環,直到它從服務器接收到連接為止。 當我嘗試將套接字作為全局變量時。 然后使用start建立連接,然后連接。 但是當我使用帶有有效數據變量的send時,出現此錯誤:套接字未連接。 僅當我將所有代碼都放在開始位置並且它將發送信息時,此方法才有效。 如果我在客戶端之前啟動服務器,這將編碼工作,但反之則不行。 試圖使其在任何情況下均有效。

#global variable definition
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def start(host, port):
    connected = False

    while not connected:     
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((host, port))
            connected = True
            print("Connected")
        except:
            print("connecting again!")
            sleep(5)

#i do put a valid json to send!
def send():
    try:
        s.sendall(json.dumps(data).encode('utf-8'))

您不應該依賴全局變量。 返回連接的套接字並在send使用它:

def start(host, port):
    while True:     
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((host, port))
            print("Connected")
            return s
        except IOError:
            print("connecting again!")
            sleep(5)

#i do put a valid json to send!
def send(s, data):
    s.sendall(json.dumps(data).encode('utf-8'))

s = start(HOST, PORT)
send(s, data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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