Показано с 1 по 10 из 11

Тема: SysSockShutdown

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Обязательно, diHow==2
    А что вообще делает эта функция?

  2. #2

    По умолчанию

    Цитата Сообщение от monteg Посмотреть сообщение
    А что вообще делает эта функция?
    Добрый день.
    Параметр diHow указывает, какой из каналов будет закрыт.
    В описании библиотеки указано, что этот параметр соответствует параметрам для аналогичной функции в Win32.

    Судя по всему, значение "2" указывает на то, что закрываются оба канала сразу ("клиент" и "сервер").
    Значения "0" - закрывается только канал "клиент", "1" - закрывается канал "сервер".

  3. #3

    По умолчанию

    Цитата Сообщение от Зинько Владислав Посмотреть сообщение
    Добрый день.
    Параметр diHow указывает, какой из каналов будет закрыт.
    В описании библиотеки указано, что этот параметр соответствует параметрам для аналогичной функции в Win32.

    Судя по всему, значение "2" указывает на то, что закрываются оба канала сразу ("клиент" и "сервер").
    Значения "0" - закрывается только канал "клиент", "1" - закрывается канал "сервер".
    Т.е. эта функция вносит изменения в исполняемую среду и к обмену данными не приводит.
    Просто я сейчас пытаюсь сокеты освоить. Делаю обмен данными между двумя ПЛК, ПЛК110-30 М01 и ПЛК110-30 М02. Обмен данными идет. Можно даже сказать, что хорошо идет. Но есть косяк, если один из ПЛК выключить, то обмен данными не всегда возобновляется. А М02 SysSocketConnect зависает, если сервер выключен.
    Документации по этой теме достоверной нет, поэтому информацию беру из форума. Но на форуме информация тоже не однозначная. И не понятно, откуда ее люди вообще берут.

  4. #4

    По умолчанию

    Цитата Сообщение от monteg Посмотреть сообщение
    Т.е. эта функция вносит изменения в исполняемую среду и к обмену данными не приводит.
    Просто я сейчас пытаюсь сокеты освоить. Делаю обмен данными между двумя ПЛК, ПЛК110-30 М01 и ПЛК110-30 М02. Обмен данными идет. Можно даже сказать, что хорошо идет. Но есть косяк, если один из ПЛК выключить, то обмен данными не всегда возобновляется. А М02 SysSocketConnect зависает, если сервер выключен.
    Документации по этой теме достоверной нет, поэтому информацию беру из форума. Но на форуме информация тоже не однозначная. И не понятно, откуда ее люди вообще берут.
    SysSockSetOption( SOCK, SOCKET_SOL, SOCK_NBIO, 0, 0 ) ;
    сделает сокет неблокирующим, в этом случае зависания не будет, если сервер не может обработать запрос. после коннекта в неблокирующем режиме необходимо 2-3 мс подождать , чтобы сервер обработал запрос, после этого начинайте обмен данными, только контролируйте число отданных / принятых байт, если послыки будут большими.

  5. #5

    По умолчанию

    Цитата Сообщение от Трофимов Артем Посмотреть сообщение
    SysSockSetOption( SOCK, SOCKET_SOL, SOCK_NBIO, 0, 0 ) ;
    ну да, где SOCK_NBIO=1014, пробовал, не помогает.
    Все операции с сокетами разнес по циклам, минимальное MinCycleLength = 10, между SysSoskConnect и SysSockSend задержки ставил разные, до нескольких секунд.

  6. #6

    По умолчанию

    Блин, вот я чудак, SOCK_NBIO=16#1014

Ваши права

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