Python-сокеты [WinError 10038] Была предпринята попытка выполнить операцию на чем-то, что не является сокетом - PullRequest
0 голосов
/ 03 июля 2018

Это не дубликат.

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

В настоящее время я создаю чат-сервер, используя модуль сокетов python. Когда я запускаю сервер, после того, как клиент подключается и сервер говорит об этом, я получаю исключение:

[WinError 10038] An operation was attempted on something that is not a socket

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

tcpServer.py

tcpClient.py

Упрощенная:

testServer.py

testClient.py

1 Ответ

0 голосов
/ 03 июля 2018

позвольте мне прояснить пару вещей для вас:

  • на стороне сервера: вы создаете сокет, связываете его и слушаете для соединений.
  • на стороне клиента: вы создаете сокет и затем пытаетесь подключить к серверу.

На стороне сервера в вашем случае все в порядке, однако на стороне клиента вам необходимо удалить эту строку:

s.bind(("127.0.0.1",port))

Обычно вы делаете что-то вроде этого, например:

ip = '127.0.0.1'
port = 1234
s.connect((ip, port))
s.send("hello".encode("utf-8"))
while True:
    s.send(input().encode("utf-8"))
...