Errno 10061:无法建立连接,因为目标计算机主动拒绝它(客户端 - 服务器)

时间:2012-10-20 22:32:11

标签: python sockets

我遇到这些客户端和服务器代码的问题,我一直得到 [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:代码来自互联网。

15 个答案:

答案 0 :(得分:23)

10061是WSAECONNREFUSED,'连接被拒绝',这意味着没有任何东西正在侦听您尝试连接的IP:端口。

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

答案 1 :(得分:5)

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

...实际上,如果在目标机器上调用bin / mongo可执行文件and the mongodb service is simply not running,也会给出此响应(以及具体的errno:10061)。这甚至适用于本地机器实例(所有都发生在localhost上)。

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

See here.

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

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

它将起作用

答案 4 :(得分:1)

所以我遇到了同样的问题, 对我有用的解决方案是...

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

  1. 首先,打开一个python shell
  2. 首先打开并运行服务器程序
  3. 然后打开另一个不同的 python shell
  4. 在此处打开并运行客户端程序
  5. 完成!!

答案 5 :(得分:0)

如果您的计算机上安装了远程服务器。将server.py主机命名为“localhost”和端口号。 那么客户端,你必须给出本地ip-127.0.0.1和端口号。 它的作品

答案 6 :(得分:0)

当我使用python库调用REST API时遇到了类似的问题,并且发现我的服务器正进入睡眠模式,这导致了这一问题。通过远程桌面连接登录到服务器后,我的API调用便开始起作用。

答案 7 :(得分:0)

以下更改解决了我的问题。 我为同样的错误苦了一个星期。我想与大家分享解决方案就是服务器中的host = ''和服务器客户端host = ip

答案 8 :(得分: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

希望它对您有用

答案 9 :(得分:0)

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

host = ''

然后将socket.AF_INET,socket.SOCK_STREAM添加到's'变量中:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

答案 10 :(得分:0)

代替本地主机地址“ 0.0.0.0”,在服务器和客户端代码均使用的情况下,将本地网络地址用作主机。

host ='192.168.12.12' 端口= 12345

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

server.bind((主机,端口)) client.connect((主机,端口))

此更改为我解决了这个问题。

答案 11 :(得分:-1)

解决方案是在客户端和服务器中使用相同的IP和端口号。 尝试,在客户端使用     TCP_IP ='在这里写下ip号码'     TCP_PORT =在此处写入端口号     s.connect((TCP_IP,TCP_PORT))

答案 12 :(得分:-1)

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

答案 13 :(得分:-1)

这可能是由于代理服务器或防火墙引起的。如果是代理,则需要在代码或项目的入口点指定代理设置。

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 .....

答案 14 :(得分:-1)

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