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 и разрешите доступ к сети.