Указываю как SIZEOF(mystring).
Указываю как SIZEOF(mystring).
вот вот, а в строке данных меньше чем её размер. Надо явно указывать сколько байт посылать.
Тролль-наседка, добрый, нежный и ласковый
KeepAlive называется чтобы сокет не умирал. Я в этих пакетах заодно данные передаю.
Подскажите момент: одновременно по таймеру выполняю две функции SysSockSend(), сокет создан в неблокирующем режиме SysSockIoctl(socket, SOCKET_FIONBIO, 1), но результат выполнения второй функции возвращает -1. Сделал это ради эксперимента, так как возможна одновременная отправка данных по сокету, а успех отправки очень важен.
А вставить паузу?
Тролль-наседка, добрый, нежный и ласковый
Я рассматриваю вариант если совпадет отправка двух или более пакетов данных по сокету, то я не смогу избежать потери информации. Или неблокирующие сокеты не поддерживаются?
Если я правильно Вас понял, Вы пытаетесь вызвать дважды и более функцию SysSockSend за один цикл ПЛК. Я так не пробовал, но у меня, сформированные в течении цикла ПЛК пакеты складываются в специальный буфер-накопитель. Затем, в конце цикла я формирую буфер данных для отправки по сети в виде "склейки" пакетов из буфера-накопителя и передаю его с помощью SysSockSend, далее, убедившись, что весь буфер передан корректно (здесь я учитываю, что на это может уйти не один цикл ПЛК) , приступаю к формированию и передаче следующей склейки. Процесс накопления буфера сообщений (события объекта) и процесс передачи этих сообщений в сеть происходят асинхронно. Это конечно для Stream-сокета.
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
Да, вы правильно поняли. С сокетами раньше работал, но не в кодесис, вызывал функции отправки последовательно, видимо была задержка и все отправлялось, отправки склеивались. Создал, как Вы сказали, "буфер", приходится складывать в него байтовые массивы, по другому решения задачи не вижу. Да и интервал выполнения установил 100мс, реже сокет не справляется с отправкой...