Python socket.error:[Errno 61]连接被拒绝
我对套接字编程非常新颖。我正尝试通过以太网连接到电源。我的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的线索,以了解如何解决这个错误,但无济于事。有什么想法吗?
看起来好像没有任何东西在你指定的主机和端口上运行(例如你可以用nmap来检查它)。
在这种情况下,它是否期望收到任何内容并对其作出响应?
编辑:您的代码不工作,因为在远程主机和您指定的端口(8080),必须有一些代码运行,侦听消息并响应它们。如果该端口上没有任何内容运行,它显然会返回“连接被拒绝”错误。
换句话说,你所创建的客户端,但不是服务器:P
电源显示在开关的接口中。我选择的端口是随机的(我认为4096以上的任何东西都可以)。 我必须在使用之前了解nmap。但是要回答最后一个问题,我不确定它期望收到。我期望通过发送一个命令,我只是得到一个回应(显然我有一厢情愿的想法)。 – resident
我编辑了我的答案,希望我能更好地解释自己:D – rarguelloF
The port I chose was random (I thought anything above 4096 would be okay).
参见如何Access the Command Line的Digi Connect® Family Command Reference。
命令行界面的Digi设备使用的telnet端口,这是TCP端口23
(端口号限制,你可能会想的只是,如果你做服务器适用。)
你在TCP或UDP协议上?尝试将'socket.SOCK_DGRAM'改为'socket.SOCK_STREAM'。 –
@铁拳 据我所知,UPD ='socket.SOCK_DGRAM'和TCP ='socket.SOCK_STREAM'。 我试图使所建议的修改,并得到下面的终端错误: 'getDeviceInfo self.supply.send(“一些命令”) socket.error:[错误32]分拆pipe' – resident
我不能确切地告诉,直到你让我们知道你在服务器端运行了什么,在这种情况下你的电源是HTTP服务器还是什么? –