Python socket.error:[Errno 61]连接被拒绝

时间:2015-12-15 21:33:29

标签: python sockets

我是套接字编程的新手。我试图通过以太网连接到电源。我的Mac(OS X)连接到以太网交换机,电源也连接到交换机。我有一些用python编写的代码来向/从电源发送/接收命令/消息。

交换机接口允许我为电源分配静态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上搜索了关于如何解决这个错误的线索,但无济于事。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

看起来您指定的主机和端口上没有任何内容(例如,您可以使用nmap进行检查)。

如果是这样的话,是否期望收到任何东西并回复它?

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

换句话说,您创建了客户端,但没有创建服务器:P

答案 1 :(得分:0)

  

我选择的端口是随机的(我认为4096以上的任何东西都是   好)。

请参阅Digi Connect® Family Command Reference了解如何Access the Command Line Digi设备的命令行界面使用 telnet 端口,即TCP端口23 (您可能认为的端口号限制仅在您执行服务器时适用。)