Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 46

Тема: TCP клиент на SysLibSockets

  1. #1

    По умолчанию TCP клиент на SysLibSockets

    Добрый день. Тестирую пример TCP клиента на вышеуказанной библиотеке на ПЛК154. Интересует следующее: когда открываю соединение и клиент подключается к серверу и держит соединение несколько секунд, после соединение закрывается, если ничего не отправлять на сервер или обратно. Как держать соединение пока сервер работает и как ловить ошибки отправки по сокету в Codesys?

  2. #2

    По умолчанию

    Это стандартное поведение сокета. если нет данных - через таймаут сокет закрывается.
    Есть функция получения кода последней ошибки.
    Тролль-наседка, добрый, нежный и ласковый

  3. #3

    По умолчанию

    Функция SysSockSetOption(socket, SOCKET_IPPROTO_TCP, SOCKET_TCP_NODELAY, ADR(sa), SIZEOF(sa)); меняет таймаут?

    Сформулирую вопрос иначе: могу ли я открыть соединение и, к примеру, один раз в 20 секунд что-то отправлять с клиента не разрывая соединение?
    Последний раз редактировалось Carter; 18.09.2015 в 15:35.

  4. #4

    По умолчанию

    Стек IP в 1хх достаточно сильно урезан и опции сокетов не поддерживаются.
    Тролль-наседка, добрый, нежный и ласковый

  5. #5

    По умолчанию

    Значит стандартными средствами я не смогу организовать свой протокол обмена? Если какие-то пути решения задачи? Кто-нибудь сталкивался с этим?

  6. #6
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Цитата Сообщение от Carter Посмотреть сообщение
    Добрый день. Тестирую пример TCP клиента на вышеуказанной библиотеке на ПЛК154. Интересует следующее: когда открываю соединение и клиент подключается к серверу и держит соединение несколько секунд, после соединение закрывается, если ничего не отправлять на сервер или обратно. Как держать соединение пока сервер работает и как ловить ошибки отправки по сокету в Codesys?
    Мы используем пакеты "Heartbeat" раз в секунду для контроля и поддержания соединения во время отсутствия активного обмена. Функция SysSockSend возвращает количество успешно переданных байт => можно ловить ошибки отправки.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  7. #7

    По умолчанию

    Цитата Сообщение от _Pavel_ Посмотреть сообщение
    Мы используем пакеты "Heartbeat" раз в секунду для контроля и поддержания соединения во время отсутствия активного обмена. Функция SysSockSend возвращает количество успешно переданных байт => можно ловить ошибки отправки.
    Идея Ваша решает эту проблему и, видимо, без "пинговых" пакетов мне не обойтись. Попробую ловить ошибки отправки как Вы сказали.
    И очень смущает, что SysSockConnect() не возвращает TRUE, хотя работает...

  8. #8
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    И очень смущает, что SysSockConnect() не возвращает TRUE, хотя работает...
    У Овна в ПЛК 1хх что в SysLibSockets, что в SysLibCom бардак в аргументах и возвращаемых значениях.

  9. #9

    По умолчанию

    Подскажите еще момент, передаю строку командой SysSockSend(), на серверу получаю строку с "мусором" , аналогично с сервера приходят данные с ненужными символами.

  10. #10

    По умолчанию

    размер точно указываете или как strlen()?
    Тролль-наседка, добрый, нежный и ласковый

Страница 1 из 5 123 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК100 TCP клиент
    от DmitriyFara в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 08.04.2015, 12:13
  2. TCP клиент - ПЛК100
    от DmitriyFara в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 28.03.2015, 16:54
  3. SysLibSockets
    от osipov86 в разделе Сетевые технологии
    Ответов: 18
    Последнее сообщение: 27.01.2014, 18:43
  4. FTP клиент на ОВЕН ПЛК
    от Jumo в разделе Сетевые технологии
    Ответов: 12
    Последнее сообщение: 05.09.2011, 07:27

Ваши права

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