socket.gaierror: [Errno 11004] getaddrinfo failed socket Python

Я решил написать онлайн чат на Python, используя сервер и клиентов на модуле socket по одному уроку в интернете, и пока ещё не со всем разобрался:

server.py

import socket, time

host = socket.gethostbyname(socket.gethostname())
port = 9090

clients = []

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))

quit = False
print("[ Server Started ]")

while not quit:
    try:
        data, addr = s.recvfrom(1024)

        if addr not in clients:
            clients.append(addr)

        itsatime = time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime())

        print("["+addr[0]+"]=["+str(addr[1])+"]=["+itsatime+"]/",end="")
        print(data.decode("utf-8"))

        for client in clients:
            if addr != client:
                s.sendto(data,client)
    except: 
        print("\n[ Server Stopped ]")
        quit = True
        
s.close()

В третей строке как я понял, определяется имя компьютера на котором запущен сервер в сети, с этой строкой и случилась проблема при запуске, выходит ошибка:

Traceback (most recent call last):
  File "D:\server.py", line 3, in <module>
    host = socket.gethostbyname(socket.gethostname())
socket.gaierror: [Errno 11004] getaddrinfo failed

Можно конечно указать конкретное имя в '', но та-же ошибка возникает с клиентом принимающим сообщения при определении его имени в строке host = socket.gethostbyname(socket.gethostname()).

import socket, threading, time

key = 8194

shutdown = False
join = False

def receving (name, sock):
    while not shutdown:
        try:
            while True:
                data, addr = sock.recvfrom(1024)
                #print(data.decode("utf-8"))

                # Begin
                decrypt = ""; k = False
                for i in data.decode("utf-8"):
                    if i == ":":
                        k = True
                        decrypt += i
                    elif k == False or i == " ":
                        decrypt += i
                    else:
                        decrypt += chr(ord(i)^key)
                print(decrypt)
                # End

                time.sleep(0.2)
        except:
            pass
host = socket.gethostbyname(socket.gethostname())
port = 0

server = ("192.168.1.37",9090)

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((host,port))
s.setblocking(0)

alias = input("Name: ")

rT = threading.Thread(target = receving, args = ("RecvThread",s))
rT.start()

while shutdown == False:
    if join == False:
        s.sendto(("["+alias + "] => join chat ").encode("utf-8"),server)
        join = True
    else:
        try:
            message = input()

            # Begin
            crypt = ""
            for i in message:
                crypt += chr(ord(i)^key)
            message = crypt
            # End

            if message != "":
                s.sendto(("["+alias + "] :: "+message).encode("utf-8"),server)
            
            time.sleep(0.2)
        except:
            s.sendto(("["+alias + "] <= left chat ").encode("utf-8"),server)
            shutdown = True

rT.join()
s.close()

Помогите, с чем связана эта ошибка и как ее можно решить?


Ответы (0 шт):