我对套接字编程非常陌生。我正在尝试通过以太网连接到电源。我的 Mac (OS X) 连接到以太网交换机,电源也连接到该交换机。我有一些用 python 编写的代码,用于向电源发送/接收命令/消息。
交换机接口(interface)允许我为电源分配静态 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
关于Python套接字.错误: [Errno 61] Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34299809/