Ошибка бинда сокет сервера ([Errno 22] Invalid argument)
Решил я написать сервер-чат на локально сетевом уровне, и в процессе оптимизации кода застрял с вот такой картиной:
Traceback (most recent call last):
File "./local-network_server.py", line 47, in <module>
server.set_up()
File "./local-network_server.py", line 16, in set_up
self.bind(("127.0.0.1", 1234))
OSError: [Errno 22] Invalid argument
Вот что я подключаю:`
from Socket import Socket
import threading
Сам код:
class Server(Socket):
def __init__(self):
super(Socket, self).__init__()
# Даёт возможность подключаться к серверу #Максимальное колличество подключаемых пользователей
self.listen(1)
print("Server is waiting")
self.users = [] # Массив мользователей
def set_up(self):
self.bind(("127.0.0.1", 1234))
self.accept_sockets()
def send_data(self, data):
for user in self.users:
user.send(data)
def listen_socket(self, listened_socket=None): # цикл на прослушку пользователя
print("Listening user")
while True:
data = listen_socket.recv(2048)
print(f"User sent {data}")
self.send_data(data)
def accept_sockets(self):
while True:
user_socket, add = self.accept() # Подключает пользователей
print(f"User <{add}> connected!")
# Добавление сокета пользователя в лист пользователей
self.users.append(user_socket)
listen_accepted_user = threading.Thread(
target=self.listen__socket,
args=(user_socket,)
) # передача списка пользователей которых мы слушаем
listen_accepted_user.start()
if __name__ == '__main__':
server = Server()
server.set_up()
Родительский файл:
import socket
class Socket(socket.socket):
def __init__(self):
super(Socket, self).__init__(
socket.AF_INET,
socket.SOCK_STREAM,)
def send_data(self, data):
raise NotImplementedError()
def listen_socket(self, listened_socket=None):
raise NotImplementedError()
def set_up(self):
raise NotImplementedError()
К сожалению все подсказки ,что я находил мне не помогали. Номер порта менял на 8889, не помогло. Думал, что эта ошибка может быть из-за не правильного заимствования класса 'Socket', но вроде не в этом проблема.