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

Тема: SysSockInetAddr

  1. #1

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

    Добрый день!
    Что должна возвращать функция SysSockInetAddr? У меня все время возвращает 0. Например:
    dn: DINT;
    dn:= SysSockInetAddr( '10.0.0.7' ); (* dn = 0 *)
    Задался вопросом потому что никак не могу дождаться TRUE от SysSockConnect... )
    Спасибо.

  2. #2

    По умолчанию

    да... новички они такие....
    спрашиваешь одно, а они отвечают другое... ))

    Кто ответит НОЛЬ корректный ответ от SysSockInetAddr? Функция возвращает НОЛЬ в двух проектах, со стороны клиента и со стороны сервера. Соответственно не конектяца оба... ))

  3. #3

    По умолчанию

    Посмотреть в какой DWORD будет конвертировать другой скормленный STRING ))

  4. #4

    По умолчанию

    Неа. А что должна возвратить SysSockCreate? Я так понимаю манипулятор (адрес в памяти ПЛК) созданного сокета. У меня SysSockCreate возвращает 1 (это даже не SOCKET_INVALID). Это к вопросу о количестве созданных (и не закрытых) сокетов. Сколько их не создавай все равно возвращает 1... ))
    В какую сторону копать? ))

  5. #5

    По умолчанию

    Ну да. В библиотеке можно лишь посмотреть порядок вызовов функций. А вот проверки того, что они исполнились не подходят совсем. Функции возвращают совсем не то, что от них ожидаешь. Связь появилась, но SysSockInetAddr так и не заработала, от SysSockConnect так true и не дождался. По ходу так же криво устроены и (*ошибся*), и SysSockListen. Может я и не прав, но true от них так и не видел. SysSockInetNtoa по ходу тоже не работает совсем. Посмотреть IP клиентов на сервере пока так и не смог. Разработчики, я не прав? У Вас все работает? "На что" Вы, проверяете функции? Что я делаю не так? ))
    Последний раз редактировалось lazy; 24.05.2012 в 11:51.

  6. #6

    По умолчанию

    Меня терзают смутные сомнения, что для PLK100.K-M, код по ссылке работать не будет. Потому что:

    IF SysSockConnect( m_dnSocket, ADR( m_SAddress ), SIZEOF( m_SAddress ) ) THEN
    (* Ok*) - здесь оказаться так и не смог;
    ELSE
    (* Error *);
    END_IF;

    пока работает так:
    IF BOOL_TO_INT( SysSockConnect( m_dnSocket, ADR( m_SAddress ), SIZEOF( m_SAddress ) ) ) < 0 THEN
    (* Error *);
    ELSE
    (* Ok *);
    END_IF;

    Так же поступаю и с (*ошибся*), и с SysSockListen. Но хотелось бы гарантий, что связь не будет зависеть от погоды... ))
    Последний раз редактировалось lazy; 24.05.2012 в 11:51.

  7. #7

    По умолчанию

    Как перевести IP адрес из строки в DWORD?
    Например '10.0.0.8' это 16#0A000008 ?

  8. #8

    По умолчанию

    capzap, запиште мне 10.0.0.8 DWORD'ом "или хотя бы четырмя байтами" )
    я спросил это 16#0A000008 ? )

  9. #9

    По умолчанию

    Я ходил по всем ссылкам. Читал библиотеки. И не только. не ра бо та ет ))
    В блокирующем режиме связь иногда появлялась. обмен шел. но это вероятно было случайно. и не знаю каким образом. потому что вызовом SysSockAccept можно узнать IP клиента и этот вызов должен (как я понимаю) возвратить манипулятор сокета отличный от манипулятора сокета сервера. такого не происходило. ) эту тему можно считать закрытой SysSockInetAddr не работает. ))

Ваши права

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