簡體   English   中英

當我在 python 中使用套接字模塊時,我收到此錯誤:'socket.gaierror: [Errno 11001] getaddrinfo failed'

[英]I get this error:' socket.gaierror: [Errno 11001] getaddrinfo failed' when I use the socket module in python

所以我正在制作一個簡單的腳本,它只是將消息從客戶端發送到服務器。 當客戶端和服務器在同一台計算機上時,腳本運行完美,但是當我使用另一台筆記本電腦並嘗試向服務器發送消息時,它會在客戶端筆記本電腦上顯示此錯誤。

服務器腳本:

import threading


HEADER = 64
PORT = 5000
SERVER = '######'
ADDR = ('', PORT)
FORMAT = 'utf-8'
DISCONNECT_MSG = '//*DISCONNECT*//'

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(ADDR)



def handle_client(conn, addr):
    print(f'[NEW CONNECTION] {addr}')
    connected = True
    while connected:
        msg_len = conn.recv(HEADER).decode(FORMAT)
        if msg_len:
            msg_len = int(msg_len)
            msg = conn.recv(msg_len).decode(FORMAT)
            if msg == DISCONNECT_MSG:
                connected = False
            print(f'[{addr}] {msg}')
    conn.close()
    
    


def start():
    print(f'[LISTENING] listening on {SERVER}')
    server.listen()
    while True:
        conn, addr = server.accept()
        # hc for hand client
        thread_hc = threading.Thread(target=handle_client, args=(conn, addr))
        thread_hc.start()
        print(f'[ACTIVE CONNECTIONS] {threading.activeCount() - 1}')


print('[STARTING] server is starting.....')
start()

客戶端腳本:


HEADER = 64
PORT = 5000
FORMAT = 'utf-8'
DISCONNECT_MSG = '//*DISCONNECT*//'
SERVER = '######'
ADDR = (SERVER, PORT)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADDR)

def send(msg):
    message = msg.encode(FORMAT)
    msg_length = len(message)
    send_length = str(msg_length).encode(FORMAT)
    send_length += b' ' * (HEADER - len(send_length))
    client.send(send_length)
    client.send(message)

try:
    while True:
        msg = input('message: ')
        send(msg)
        if msg == DISCONNECT_MSG:
            break
except BrokenPipeError:
    print('the connection was broken')

你能告訴我代碼中有什么問題嗎? 我是python中sockets的新手,所以如果我犯了任何菜鳥錯誤,請忽略它。

getaddrinfo failed是一個錯誤,表示操作系統無法解析 DNS 名稱的 IP 地址。

例如,如果SERVER是 a-name-with-no-ip.example.com 並且您嘗試連接到它,它將拋出getaddrinfo failed

暫無
暫無

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

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