59

我对这些客户端和服务器代码有问题,我不断收到[Errno 10061] No connection could be made because the target machine positively denied it

我在带有 Windows XP SP3 的虚拟机上运行服务器,在 Windows 7 64 位上运行客户端,我的 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:代码来自网络。

4

15 回答 15

42

10061 是 WSAECONNREFUSED,“连接被拒绝”,这意味着在您尝试连接的 IP:端口上没有任何监听。

大约在 2000 年有一个防火墙产品,它发出拒绝而不是忽略到被阻塞端口的传入连接,但这很快被认为是对攻击者的信息泄漏,并被纠正或撤回。

于 2012-10-20T23:10:20.170 回答
6

提示:actively refused听起来有点更深层次的技术问题,但是......

errno:10061...实际上,如果调用 bin/mongo 可执行文件并且 mongodb 服务根本没有在目标机器上运行,也会给出这个响应(也特别是)。这甚至适用于本地机器实例(都发生在本地主机上)。

始终首先排除这种微不足道的可能性,即只需使用命令行客户端访问您的数据库。

看这里。

于 2016-01-24T14:13:54.957 回答
3

使用以下示例:https ://docs.python.org/3.2/library/socketserver.html 我确定我需要将 HOST 端口设置为运行服务器程序的机器。所以 TCPServer on 192.168.0.1 HOST = TCPServer IP 192.168.0.1 然后我必须将 TCPClient 端设置为指向 TCPServer IP。所以 TCPClient HOST 值 = 192.168.0.1 - 抱歉,这是我能描述的最好的了。

于 2015-04-03T03:14:34.263 回答
2

所以我面临同样的问题,对我有用的解决方案是......

我假设您的服务器和客户端程序是用 python 编写的。

  1. 首先,打开一个python shell
  2. 首先打开并运行Server程序
  3. 然后打开另一个不同的python shell
  4. 在此处打开并运行客户端程序
  5. 完毕 !!
于 2021-03-19T12:50:09.753 回答
2

错误和防火墙之间没有关系。

首先,运行服务器程序,
然后在 python 的另一个 shell 中运行客户端程序

它会起作用

于 2020-05-11T19:54:58.500 回答
1

而不是'0.0.0.0'的本地主机,使用本地网络地址作为主机 - 服务器和客户端 - 代码。

主机 = '192.168.12.12' 端口 = 12345

绑定和连接到套接字时使用此主机地址。

server.bind((host, port)) client.connect((host, port))

这个改变为我解决了这个问题。

于 2020-09-04T09:32:27.990 回答
0

以下更改解决了我的问题。我为同样的错误苦苦挣扎了一周。我想和大家分享一下,解决方案只是host = ''在服务器和服务器的客户端host = ip中。  

于 2020-01-05T08:28:35.807 回答
0

当我使用 python 库调用 REST API 时,我遇到了类似的问题,我发现我的服务器正在进入睡眠模式,这导致了这种情况。一旦我通过远程桌面连接登录到服务器,我的 API 调用就可以正常工作。

于 2018-12-05T07:40:46.060 回答
0

我有错误 10060 和 10061。原因在于我的防病毒软件(Eset Nod 32)。尝试像我一样关闭防病毒软件的防火墙,或者只是将其删除一段时间以测试程序。如果一切开始正常工作,将该程序添加到排除项或切换到另一个防病毒软件。另外,尝试将“主机”变量更改为空字符串:

host = ''

并将 socket.AF_INET、socket.SOCK_STREAM 添加到“s”变量中:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
于 2020-07-21T20:56:32.430 回答
0

如果您的机器上安装了远程服务器。将 server.py 主机作为“localhost”和端口号。然后客户端,您必须提供本地 ip- 127.0.0.1 和端口号。然后它的作品

于 2017-01-10T10:35:27.727 回答
0

这可能是因为代理或防火墙。如果是代理,那么您需要在代码或项目的入口点指定代理设置。

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 .....
于 2019-06-21T07:56:13.997 回答
0

第一个:请确保您的端口“12345”已打开,然后当您使用不同的网络时。您必须在 LAN 中使用 IP 地址。不要使用“localhost”或“127.0.0.1”。这里的解决方案是: 在服务器中

host = '192.168.1.12' #Ip address in LAN network

在客户端

host = '27.32.123.32' # external IP Address

希望这对你有用

于 2020-07-10T07:21:35.433 回答
-1

短期解决方案是分别使用默认的 iis 主机和端口,通常分别为 120.0.0.1 和 80。但是,我仍在寻找更通用的解决方案。

于 2017-11-22T02:02:40.623 回答
-1

当您在windows机器上运行代码时,防火墙提示它允许网络访问,允许网络访问并且它将工作,如果没有提示,请转到防火墙设置>允许应用程序通过防火墙并选择您的python.exe并允许网络访问。

于 2019-07-31T04:37:30.380 回答
-1

解决方案是在客户端和服务器中使用相同的 IP 和端口号。尝试,在客户端使用 TCP_IP = 'write the ip number here' TCP_PORT = write the port number here s.connect((TCP_IP, TCP_PORT))

于 2016-11-26T09:58:24.660 回答