我是套接字编程的新手。我试图通过以太网连接到电源。我的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上搜索了关于如何解决这个错误的线索,但无济于事。有什么想法吗?
答案 0 :(得分:1)
看起来您指定的主机和端口上没有任何内容(例如,您可以使用nmap进行检查)。
如果是这样的话,是否期望收到任何东西并回复它?
编辑:您的代码无效,因为在远程主机和您指定的端口(8080)中,必须运行一些代码,侦听消息并对其进行响应。如果该端口上没有任何运行,它显然会返回“连接被拒绝”错误。换句话说,您创建了客户端,但没有创建服务器:P
答案 1 :(得分:0)
我选择的端口是随机的(我认为4096以上的任何东西都是 好)。
请参阅Digi Connect® Family Command Reference了解如何Access the Command Line Digi设备的命令行界面使用 telnet 端口,即TCP端口23 (您可能认为的端口号限制仅在您执行服务器时适用。)