Errno 10061: соединение не может быть выполнено, потому что целевая машина активно отказалась от него (клиент-сервер)
У меня проблема с этими кодами клиента и сервера, я продолжаю получать [Errno 10061]. Никакое соединение не может быть сделано, потому что целевая машина активно отказалась от него
Я запускаю сервер на виртуальной машине с Windows XP SP3 и клиентом на Windows 7 64bit, моя версия python - 2.7.3. Я хочу знать, как изменить код для использования клиента и сервера в разных сетях! Благодарю!
сервер:
#!/usr/bin/python # This is server.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = '0.0.0.0' # Get local machine name
port = 12345 # Reserve a port for your service.
print 'Server started!'
print 'Waiting for clients...'
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
while True:
msg = c.recv(1024)
print addr, ' >> ', msg
msg = raw_input('SERVER >> ')
c.send(msg);
#c.close() # Close the connection
клиент:
#!/usr/bin/python # This is client.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
print 'Connecting to ', host, port
s.connect((host, port))
while True:
msg = raw_input('CLIENT >> ')
s.send(msg)
msg = s.recv(1024)
print 'SERVER >> ', msg
#s.close # Close the socket when done
PS: код из Интернета.
Ответы
Ответ 1
10061 WSAECONNREFUSED, "connection отказано", что означает, что на IP-порту, к которому вы пытались подключиться, ничего не слушалось.
В 2000 году был выпущен продукт брандмауэра, который выдавал отказы вместо того, чтобы игнорировать входящие соединения с заблокированными портами, но это было быстро признано утечкой информации злоумышленникам и исправлено или отменено.
Ответ 2
Подсказка: actively refused
звучит несколько глубже технических проблем, но...
... на самом деле, этот ответ (а также специально errno:10061
) также предоставляется, если вы вызываете исполняемый файл bin/mongo а служба mongodb просто не работает на целевой машине. Это даже относится к локальным машинным экземплярам (все происходит на локальном хосте).
➪ Всегда исключайте эту тривиальную возможность сначала, т.е. просто используя клиент командной строки для доступа к вашему db.
Смотрите здесь.
Ответ 3
Используя примеры из: https://docs.python.org/3.2/library/socketserver.html
Я решил, что мне нужно установить порт HOST на машину, на которой была запущена программа сервера. Таким образом, TCPServer на 192.168.0.1 HOST = TCPServer IP 192.168.0.1, тогда мне пришлось установить сторону TCPClient, чтобы указать на IP-адрес TCPServer. Итак, значение HOSTClickClick = 192.168.0.1 - Извините, это лучшее, что я могу описать.
Ответ 4
если на вашем компьютере установлен удаленный сервер. укажите server.py хост как "localhost" и номер порта.
то на стороне клиента вы должны указать локальный номер ip-127.0.0.1 и номер порта.
то его работы
Ответ 5
Я столкнулся с аналогичной проблемой, когда я звонил в REST API, используя библиотеку python, и обнаружил, что мой сервер перешел в спящий режим, что привело к этому. Как только я вошел на сервер через подключение к удаленному рабочему столу, мой API-вызов работал.
Ответ 6
Решение состоит в том, чтобы использовать один и тот же номер IP и порта как на клиенте, так и на сервере.
Попробуйте в клиенте использовать TCP_IP = 'напишите номер ip здесь' TCP_PORT = записать номер порта здесь s.connect((TCP_IP, TCP_PORT))
Ответ 7
краткосрочным решением является использование стандартного iis-хоста и порта, обычно 120.0.0.1 и 80 соответственно. Однако я все еще ищу более универсальное решение.
Ответ 8
Это может быть из-за прокси или брандмауэра. Если это прокси, то вам нужно указать настройки прокси в точке входа вашего кода или проекта.
import os #for proxy
proxy = 'http://10.XX.XX.XX:8X8X' #your own proxy 'http://<user>:<pass>@<proxy>:<port>'
os.environ['http_proxy'] = proxy
os.environ['HTTP_PROXY'] = proxy
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy
#rest of code .....
Ответ 9
Когда вы запускаете код на машине с Windows, брандмауэр предлагает ему разрешить доступ к сети, разрешить доступ к сети, и он будет работать, если он не запрашивает, перейдите в настройки брандмауэра> разрешить приложение через брандмауэр и выберите ваш python.exe и разрешите доступ к сети.