2015-12-15 130 views
2

我对套接字编程非常新颖。我正尝试通过以太网连接到电源。我的Mac(OS X)连接到以太网交换机,电源也连接到交换机。我有一些用python编写的代码来向/从电源发送/接收命令/消息。Python socket.error:[Errno 61]连接被拒绝

交换机接口允许我为电源分配静态IP。这是我用作以下代码中的目标IP的相同IP:

def __init__(self, IP_TARGET): 
     IP = IP_TARGET 
     PORT = 8080 
     self.supply = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
     self.supply.connect((IP, PORT)) 

此代码运行时没有任何问题。我的下一个目标是使用下面的代码的设备进行通信:

def getDeviceInfo(self): 
     self.supply.send('some command ') 
     self.supply.recv(10) 

使用我已经缩小问题下到的recv()命令的一些打印语句。 send()不会引发错误。我收到以下错误

...in getDeviceInfo 
self.supply.recv(10) socket.error: [Errno 61] Connection refused 

我能够使用我使用以太网交换机分配的IP来ping设备。我关闭了防火墙。我已经搜索了www的线索,以了解如何解决这个错误,但无济于事。有什么想法吗?

+0

你在TCP或UDP协议上?尝试将'socket.SOCK_DGRAM'改为'socket.SOCK_STREAM'。 –

+0

@铁拳 据我所知,UPD ='socket.SOCK_DGRAM'和TCP ='socket.SOCK_STREAM'。 我试图使所建议的修改,并得到下面的终端错误: 'getDeviceInfo self.supply.send(“一些命令”) socket.error:[错误32]分拆pipe' – resident

+0

我不能确切地告诉,直到你让我们知道你在服务器端运行了什么,在这种情况下你的电源是HTTP服务器还是什么? –

回答

1

看起来好像没有任何东西在你指定的主机和端口上运行(例如你可以用nmap来检查它)。

在这种情况下,它是否期望收到任何内容并对其作出响应?

编辑:您的代码不工作,因为在远程主机和您指定的端口(8080),必须有一些代码运行,侦听消息并响应它们。如果该端口上没有任何内容运行,它显然会返回“连接被拒绝”错误。

换句话说,你所创建的客户端,但不是服务器:P

+1

电源显示在开关的接口中。我选择的端口是随机的(我认为4096以上的任何东西都可以)。 我必须在使用之前了解nmap。但是要回答最后一个问题,我不确定它期望收到。我期望通过发送一个命令,我只是得到一个回应(显然我有一厢情愿的想法)。 – resident

+0

我编辑了我的答案,希望我能更好地解释自己:D – rarguelloF

相关问题