запрошенный адрес недействителен в его контексте

#python #sockets #udp #modbus #plc

Вопрос:

У меня есть ПЛК и ноутбук, подключенные к сети. IP — адрес ПЛК-10.101.133.13, а ноутбука-10.101.133.14

Я хотел выполнить простую программу сокета с использованием python, и код выглядит следующим образом:

 import socket ipaddr = "10.101.132.13"; port=3500; s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((ipaddr,port))  

Я получаю сообщение об ошибке [WinError 10049] Запрошенный адрес недействителен в контексте, указывающем на инструкцию s.bind ().

Пожалуйста, помогите мне избавиться от этого. Уже существует программа, связанная с MODBUS, работающая на ПЛК. Я хочу подключиться к ПЛК с помощью программирования сокетов python.

Ответ №1:

Привязка может быть выполнена только к локальному адресу. Похоже, вы пытаетесь привязаться к адресу другой системы, то есть ПЛК. Вы, вероятно, хотели connect вместо этого обратиться к удаленной системе.

Комментарии:

1. Я не понимаю, что на самом деле подразумевается под локальным устройством или удаленным устройством. Я новичок в этих концепциях. Пожалуйста, пролейте немного света на то, что такое локальное устройство и чем оно отличается от точки зрения подключения и т.д. Кстати, как мне подключиться к ПЛК в таких случаях. Какие настройки в ПЛК я должен изменить/модифицировать, чтобы он мог взаимодействовать с ноутбуком?

2. @RajeshV: локальным устройством является ноутбук, то есть тот, который пытается подключиться к ПЛК. Вам нужно исправить свою программу, а не что-либо менять в ПЛК. Возможно, было бы полезно понять основные концепции сетевого программирования, особенно то, что делают bind и connect.