Попытка подключить сокет к серверу в разных сетях поднимает WinError 10060 - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь установить sh соединение через сокет, поэтому я написал и попробовал этот пример кода с server.py и client.py:

server.py:

import socket

port = 5674
ip = socket.gethostbyname(socket.gethostname())

s = socket.socket()
s.bind((ip, port))
s.listen(2)
print('Server is ready')

while True:
    client, address = s.accept()
    print('New connection to {}'.format(address))
    client.send('You are connected to the server!'.encode('utf-8'))

client.py:

import socket

ip = ''  # enter ip address of server
port = 5674

s = socket.socket()
s.connect((ip, port))

msg = s.recv(1024).decode('utf-8')
print(msg)

Попытка запустить это на одной машине будет работать абсолютно нормально.

Запуск на разных машинах в разных сетях выдаст следующее сообщение об ошибке в client.py :

Traceback (последний вызов был последним): файл "D: /Python/01programs/SocketTest/client.py", строка 7, в s.connect ((ip, port)) TimeoutError: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da d ie Gegenstelle nach einer> bestimmten Zeitspanne nicht richtig reagiert hat, oder d ie hergestellte Verbindung war fehlerhaft, da> der verbundene > сокращено в Engli sh: попытка подключения не удалась, поскольку подключенный хост не ответил вовремя

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

Какая часть не так и как исправить? Спасибо за помощь!

PS: я уже прочитал много вопросов, связанных с этой проблемой, но ни один из них, похоже, не помог в моем случае.

1 Ответ

0 голосов
/ 12 января 2020

Если вы пытаетесь получить доступ к вашему серверу не с того же хоста, вы не можете. вам нужно запустить сервер не в режиме локального хоста, измените привязку ip сервера на «0.0.0.0», и он должен работать.

...