2015-12-15 200 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

相關問題