Проблема с сервером на сокетах(Python)
Я решил разобраться с библиотекой socket и асинхронностью, для подключения использовал и cURL и своего клиента(тоже написанного на сокетах), при подключение выскакивает данная ошибка:
Traceback (most recent call last):
File "C:\Users\piple\Desktop\Курс по пайтну\test_server_python\1_select.py", line 42, in
<module>
event_loop()
File "C:\Users\piple\Desktop\Курс по пайтну\test_server_python\1_select.py", line 38, in
event_loop
send_message(sock)
File "C:\Users\piple\Desktop\Курс по пайтну\test_server_python\1_select.py", line 22, in
send_message
request = client_socket.recv(4096)
OSError: [WinError 10057] Запрос на отправку или получение данных (when sending on a datagram
socket using a sendto call) no address was supplied
Я долго искал в гугле эту ошибку, но так и не нашёл решение своей ошибки, надеюсь на вашу помощь. Вот мой код:
import socket
from select import select
to_monitor = []
server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_sock.bind(('127.0.0.1', 4242))
server_sock.listen()
print("ОСНОВНЫЕ ПЕРЕМЕННЫЕ СОЗДАНЫ")
def accept_connection(server_sock):
client_socket, addr = server_sock.accept()
print('Входящее подключение c адреса: ', addr)
to_monitor.append(client_socket)
print('TO_MONITOR(ACCEPT): ')
def send_message(client_socket):
request = client_socket.recv(4096)
if request:
response = 'Hello world \n'.encode()
client_socket.send(response)
else:
client_socket.close()
def event_loop():
while True:
ready_to_read, _, _ = select(to_monitor, [], []) # read, write, errors
for sock in ready_to_read:
if sock is server_sock:
accept_connection(sock)
else:
send_message(sock)
if __name__ == '__main__':
to_monitor.append(server_sock)
event_loop()```