Как устранить ошибку 10045 при отправке данных через порт 80 с использованием Python 2.7 - PullRequest
0 голосов
/ 03 ноября 2018

Программа использует Python 2.7, и я использую Google в качестве браузера.

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 80))
server_socket.listen(10)
client_socket, client_address = server_socket.accept()
print 'New client'
req = client_socket.recv(1024)
data = '0123'
client_socket.send(data, len(data))
client_socket.close()
server_socket.close()

Когда я запускаю программу и захожу в браузер http://127.0.0.1:80, возникает следующая ошибка: Traceback (последний вызов последним): Файл "C: /.../ HttpServer.py", строка 7, в client_socket.send (data, len (data)) socket.error: [Errno 10045] Попытка выполнения операции не поддерживается для типа объекта, на который имеется ссылка

Я искал здесь для кода ошибки 10045, но я не до конца понял, что мне делать.

Ошибка возникает, только если len (data) больше 5 или я не получаю данные от клиента. Если len (data) - 1-4, данные отправляются как положено, но если это точно 5, то ошибка не возникает, но пятый символ не отправляется. Ошибка никогда не происходила со мной ни на каких других портах. Есть идеи, как решить эту проблему и почему это происходит?

Заранее спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Не вводите размер в байтах

client_socket.send(data, len(data))  # Errno 10045

client_socket.send(data)  # Works
...