Я пытался создать основу для какой-то простой сети и продолжаю сталкиваться с проблемой WinError 10022. Вот мой класс:
class SocketFactory:
def __init__(self, secret):
self.secret = secret
def send(self, port, e_type, h_type, msg, ip="127.0.0.1"):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
print("Socket object successfully created.\n")
s.bind((ip, port))
print("Socket bound to port \n")
while True:
c, addr = s.accept()
print('Connection established with ', addr)
if h_type == 1:
header = self.secret
c.send(header, "utf-8")
else:
print("Incorrect header type. Exiting...\n")
exit()
if e_type == 1:
c.send(bytes(msg, "utf-8"))
else:
print("Incorrect encoder type. Exiting...\n")
exit()
c.close()
Предварительный код драйвера такой:
from sockfactory import SocketFactory
print("Initializing masterserver setup...\n")
port = int(input("Enter port number: \n"))
#ip = str(input("Enter IPv4 address: \n"))
e_type = int(input("The encoding table for outbound bytes will be: \n" "1 = UTF-8 \n"))
h_type = int(input("The immutable header packet type will be: \n" "1 = Simple \n"))
msg = str(input("Enter packet payload: \n"))
secret = b'10000000011000101011110'
SocketFactory.send(port, e_type, h_type, msg, "127.0.0.1")
И сообщение об ошибке:
Traceback (most recent call last):
File "C:/Users/EvESpirit/PycharmProjects/aaa/main", line 13, in <module>
SocketFactory.send(port, e_type, h_type, msg, "127.0.0.1")
File "C:\Users\EvESpirit\PycharmProjects\aaa\sockfactory.py", line 19, in send
self.c, self.addr = s.accept()
File "C:\Users\EvESpirit\AppData\Local\Programs\Python\Python38\lib\socket.py", line 292, in accept
fd, addr = self._accept()
OSError: [WinError 10022] An invalid argument was supplied
Может кто-нибудь помочь мне здесь? Что я делаю не так и как я могу сделать это лучше? Спасибо.