Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: SysLibSockets

  1. #1

    По умолчанию SysLibSockets

    Здравствуйте, уважаемые форумчане.
    Использую ПЛК100, Codesys v2.3. Библиотеку SyslibSockets v.20.2.06(взята с диска поставки).
    Во-первых не работает функция SysSockInetAddr('string IP'). Ну ладно, можно и обойтись без нее.
    Во-вторых функция SysSockConnect() при любом случае у меня возвращает FALSE. Имею в виду, если успешно подключаюсь к серверу TCP, то результат False, если не подключается, то все равно False. Сервер TCP на Windows. Как такое может быть?
    Код:
    Код:
    address.sin_addr:=172*256*256*256+17*256*256+98*256+44;
    address.sin_family:=SOCKET_AF_INET;
    address.sin_port:=SysSockHtons(port);
    addressPointer:=ADR(address);
    IF socketId=0 THEN
    socketId:=SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM,0);
    result:=SysSockConnect(socketId,addressPointer,SIZEOF(address));
    END_IF
    Сама функция, если сервер TCP доступен, выполняет подключение(вижу на сервере подключение). И в принципе дальше работает Send, и сервер все получает. Но вопрос: как проверять выполнилось ли подключение? какую функцию для этого использовать? как получить ошибки(сервер сбросил подключение, таймаут и т.п.)

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

    По умолчанию

    Где-то обсуждалось — не могу найти тему. Короче, там кто-то всё напутал, и функции этой библиотеки возвращают что попало.

  3. #3
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от osipov86 Посмотреть сообщение
    Здравствуйте, уважаемые форумчане.
    Использую ПЛК100, Codesys v2.3. Библиотеку SyslibSockets v.20.2.06(взята с диска поставки).
    Во-первых не работает функция SysSockInetAddr('string IP'). Ну ладно, можно и обойтись без нее.
    Во-вторых функция SysSockConnect() при любом случае у меня возвращает FALSE. Имею в виду, если успешно подключаюсь к серверу TCP, то результат False, если не подключается, то все равно False. Сервер TCP на Windows. Как такое может быть?
    Код:
    Код:
    address.sin_addr:=172*256*256*256+17*256*256+98*256+44;
    address.sin_family:=SOCKET_AF_INET;
    address.sin_port:=SysSockHtons(port);
    addressPointer:=ADR(address);
    IF socketId=0 THEN
    socketId:=SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM,0);
    result:=SysSockConnect(socketId,addressPointer,SIZEOF(address));
    END_IF
    Сама функция, если сервер TCP доступен, выполняет подключение(вижу на сервере подключение). И в принципе дальше работает Send, и сервер все получает. Но вопрос: как проверять выполнилось ли подключение? какую функцию для этого использовать? как получить ошибки(сервер сбросил подключение, таймаут и т.п.)
    А как сами думаете, зачем в Вашем коде переменная результ?

  4. #4

    По умолчанию

    Результат потом можно обрабатывать, просто проблема в том, что он всегда возвращает false(при удачном установлении связи и при неудачном)

  5. #5
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    ну тогда банально если сокет отличен от инвалид_сокет значит соединение установлено

  6. #6

    По умолчанию

    Код:
    SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM,0);
    - просто возвращает сокет
    А само подключение к серверу
    Код:
    SysSockConnect(socketId,addressPointer,SIZEOF(address));
    Возвращает только BOOL(всегда false), INVALID_SOCKET как я понимаю вернет SysSockCreate, в случае если не сможет создать у себя сокет(это будет дополнительная проверка, это как
    Код:
    IF socketId=0 THEN
    ). Вообщем, насколько я понял, на ПЛК100 поддержка сокетов реализована постолько-поскольку(простой реализации, вроде create socket, connect->result, getsost-> sost socket(connect)), возможно это из-за того что плк100 не имеет ос* и полную реализацию сокетов тяжело сделать. Теперь еще хотел спросить по плк304 и codesys3.5, видел проект, они реализовали что-то уже более серьезное. Какая поддержка работы с сокетами там реализована? Более продвинутая? Подскажите, если кто-нибудь работал?

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    опять правы, плохо высказывать свое мнение имея под рукой только телефон. Я выкладывал видео как работает ТСР и не раз, не знаю что у Вас вызывает проблемы.
    Что касается 304, то там действительно проще и переменная для ошибок входит в состав аргументов функций

  8. #8

    По умолчанию

    Я же не говорю что в плк100 сокеты не работают. Они работают. И даже связываются с TCP сервером и получают и отправляют ему данные(могу видео приложить). Просто есть одна проблема: SysSocketConnect даже при удачной связи с ТСР сервером все равно возвращает false, хотя дальше можно отправлять данные. Просто тут проверку установки связи с сервером подругому не знаю как сделать(примитивная логика должна быть при установке соединения возврат true, при неудачном false). Поэтому и вопрос был конкретный по syssocketconnect. Спасибо большое за инфу по 304, буду изучать.
    Еще хотел спросить capzap, есть ли у вас проекты по удаленной диспетчеризации объектов? Писал в личку, но что-то вы не ответили(

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    там еще есть тип данных сокетадрес, возможно он может дать ответ по установлению соединения.
    По удаленной на плк я не занимался еще, у меня для этого другой язык программирования

  10. #10

    По умолчанию

    socketaddress, содержит информацию по ip куда подключаться(sin_addr), порт(sin_port), и семейство адресации(sin_family, ip, ipx,IRDA,bluetooth- это из msdn). Так что, что-то полезное отсюда не взять.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. UDP и SysLibSockets.lib
    от cer_cer в разделе ПЛК1хх
    Ответов: 26
    Последнее сообщение: 29.01.2016, 17:39
  2. SysLibSockets
    от mettled в разделе ПЛК1хх
    Ответов: 36
    Последнее сообщение: 20.01.2014, 15:23
  3. помогите: использование библиотеки SysLibSockets.lib
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 26.11.2007, 22:19

Ваши права

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