Python сокет OSError - PullRequest
       3

Python сокет OSError

0 голосов
/ 28 августа 2018

У меня есть файл, принимающий данные, поэтому

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversocket.bind(('localhost', 8088))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    recvd_data = connection.recv(4096)
    if len(recvd_data) > 0:
        data = pickle.loads(recvd_data)
        print(data)
        serversocket.shutdown(socket.SHUT_RDWR)

Сценарий правильно печатает вывод данных, но затем выдает эту ошибку. Я не понимаю этого, и я не смог найти решение.

Traceback (most recent call last):
  File "sending.py", line 21, in <module>
    connection, address = serversocket.accept()
  File "/usr/lib/python3.5/socket.py", line 195, in accept
    fd, addr = self._accept()
OSError: [Errno 22] Invalid argument

1 Ответ

0 голосов
/ 28 августа 2018

У вас есть бесконечный цикл для получения данных, но вы закрываете serversocket после получения первого пакета. Вот почему второй вызов принять не удается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...