Показано с 1 по 5 из 5

Тема: SysSockSend и несклько сокетов

  1. #1

    По умолчанию SysSockSend и несклько сокетов

    Добрый день!

    Есть, например, на ПЛК или СПК несколько открытых сокетов - сервера и клиенты. Могу ли я вызывать SysSockSend для разных сокетов в одном цикле или лучше за этим как то следить и разруливать?
    Может исключение какое вернется, сталкивался кто нибудь? Codesys 3.5, но и для второго полезно будет узнать.

    Сейчас все работает по очереди отправили запрос в один сокет - ждем ответа, затем другой... третий итд. Но это как-то не оптимально.

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение
    Добрый день!

    Есть, например, на ПЛК или СПК несколько открытых сокетов - сервера и клиенты. Могу ли я вызывать SysSockSend для разных сокетов в одном цикле или лучше за этим как то следить и разруливать?
    Может исключение какое вернется, сталкивался кто нибудь? Codesys 3.5, но и для второго полезно будет узнать.

    Сейчас все работает по очереди отправили запрос в один сокет - ждем ответа, затем другой... третий итд. Но это как-то не оптимально.
    Добрый день.
    Как я понимаю, у вас сокеты связаны с разными портами?
    Тогда можно и в одном цикле вызывать SysSockSend.

    Ваша текущая реализация выглядит разумнее с точки зрения джиттера - в пределах одного цикла задачи не будет "выбросов".

  3. #3

    По умолчанию

    Спасибо, понял. А джиттер будет связан с тем, что именно моя задача (этот конкретный цикл) будет исполняться дольше или я получу управление на следующем цикле чуть позже? Сокеты открыты в неблокирующем режиме.

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение
    Спасибо, понял. А джиттер будет связан с тем, что именно моя задача (этот конкретный цикл) будет исполняться дольше или я получу управление на следующем цикле чуть позже? Сокеты открыты в неблокирующем режиме.
    То, что в неблокирующем режиме - это здорово.
    Но всё равно, очевидно, что несколько SysSockSend в пределах цикла займут больше времени, чем один.

    Если говорить о CODESYS V3.5 - я бы рекомендовал использовать библиотеку NetBaseServices.
    Там более высокой уровень абстракции (и нужно писать меньше кода) и асинхронность из коробки.

  5. #5

    По умолчанию

    В общем ясно. Буду "проходить по открытым сокетам" и если кто то начал SysSockSend или SysSockRead на этом с сокетами все. ну а если прием/передача закончились, то в следующем цикле листаю сокеты со следующего по списку итд... )

Похожие темы

  1. настройка связи пк с плк с помощью сокетов
    от Sergey_Cherepovets в разделе Сетевые технологии
    Ответов: 6
    Последнее сообщение: 27.10.2010, 23:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •