2012-10-20 120 views
23

我遇到这些客户机和服务器代码有问题,我不断收到[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:代码是从互联网上。

+2

_actively refused it_暗示服务器机器的防火墙阻塞了连接,可能与代码无关。 –

+0

防火墙已关闭:/仍然出现错误 – havox

+2

您的VM guest虚拟机如何连接到网络?通过NAT +端口转发或桥接模式? –

回答

19

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

2000年前后发布了一款防火墙产品,它发布了拒绝服务而不是忽略到阻塞端口的传入连接,但这很快就被认为是向攻击者泄露的信息,并被纠正或撤销。

2

使用以下示例: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 - 对不起,这是我能描述的最好的。

+1

换句话说,您的目标IP地址错误。 – EJP

3

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

...其实,这种反应(还特意errno:10061)也给出,如果调用的bin /蒙戈上的可执行and the mongodb service is simply not running目标机器。这甚至适用于本地机器实例(全部发生在本地主机上)。

总是排除这种微不足道的可能性,首先是,即简单地通过使用命令行客户端来访问您的数据库。

See here.

-1

的解决方案是使用相同的IP和端口号在客户端和服务器。 尝试,在客户端使用 TCP_IP =“在这里写的IP号” TCP_PORT =这里 s.connect((TCP_IP,TCP_PORT))

+0

解决方案通常在服务器中使用0.0.0.0。 – EJP

0

令状的端口号,如果你有你的机器上安装了远程服务器。将server.py主机设置为“本地主机”和端口号。 然后在客户端,你必须给本地ip-127.0.0.1和端口号。 那么它的作品

+0

问题是关于'不同的网络',这个答案甚至不能在同一网络中的不同主机上工作,更不用说不同的网络。 – EJP

-1

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

+0

鉴于OP在两台机器上运行,并且这是一个本地主机解决方案,它不太可能工作? – roelofs

+0

并且假设localhost是127.0.0.1,而不是120.0.0.1,它甚至不能在一台主机上工作。 – EJP

相关问题