Я очень новичок в программировании сокетов. Я пытаюсь подключиться к источнику питания через Ethernet. Мой Mac (OS X) подключен к коммутатору Ethernet, а источник питания также подключен к коммутатору. У меня есть код, написанный на python для отправки/получения команд/сообщений в/из источника питания.Python socket.error: [Errno 61] Connection failed
Интерфейс коммутатора позволяет мне назначать статический 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, что я назначенный его с помощью переключателя локальных сетей. У меня отключен брандмауэр. Я искал www для подсказки относительно того, как я могу решить эту ошибку, но безрезультатно. Есть предположения?
Ты на TCP или UDP-протоколе? ... попробуйте вместо этого заменить «socket.SOCK_DGRAM' на« socket.SOCK_STREAM ». –
@Iron Fist Как я понимаю UPD = 'socket.SOCK_DGRAM' и TCP =' socket.SOCK_STREAM'. я попытался сделать предлагаемое изменение и получил следующее сообщение об ошибке: терминального 'getDeviceInfo self.supply.send («некоторой команды») socket.error: [Errno 32] Сломанный pipe' – resident
Я не могу точно сказать , пока вы не сообщите нам, что вы используете на стороне сервера, ваш источник питания в этом случае, это HTTP-сервер или что? –