|
Как определить разрыв UDP сокета на Telit GC864Q? |
|
|
|
Aug 18 2009, 11:13
|

Местный
  
Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484

|
После установки UDP соединения Код AT#SKTD=1,3333,"сервер",255,46875 открывается сокет и я обмениваюсь данными. Как определить состояние, когда нужно будет установить соединение заново или даже перезапустить GPRS сессию? Спасибо.
|
|
|
|
|
 |
Ответов
|
Aug 18 2009, 23:01
|
Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204

|
Цитата(meister @ Aug 18 2009, 15:13)  После установки UDP соединения Код AT#SKTD=1,3333,"сервер",255,46875 открывается сокет и я обмениваюсь данными. Как определить состояние, когда нужно будет установить соединение заново или даже перезапустить GPRS сессию? Спасибо. Дело в том, что особенность UDP как раз в том и есть, что сетевое соединение не устанавливается. Т.е вы "пуляете" по адресу и все! В этом его фундаментальное отличие от TCP. Если же нужно контролировать сам факт доставки (что в принципе эквивалентно контролю соединения), то это надо делать вашим ПО (как бы реализация нового уровня стека протоколов над UDP/IP).
Сообщение отредактировал alx125 - Aug 18 2009, 23:03
|
|
|
|
|
Aug 19 2009, 06:22
|

Местный
  
Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484

|
Цитата(alx125 @ Aug 19 2009, 03:01)  Дело в том, что особенность UDP как раз в том и есть, что сетевое соединение не устанавливается. Я уж не знаю насколько аналогия близкая: шлем ethernet пакеты (да, прямо их), для их посылки нужно просто записать MAC-адрес получателя, есть получатель или нету - без разницы (может, он включится завтра). Мне надо поймать факт того, что выдернули кабель из розетки. Вы предлагаете делать это протоколом? В случае ethernet я могу у PHY спросить, чего там с кабелем-скоростью-дуплексом. Мне надо тоже самое для GPRS. Цитата(AlexandrY @ Aug 19 2009, 09:16)  периодически опрашивать DNS сервер Мне вот это очень не нравится. Мне надо будет "периодически" закрывать соединение и получать адрес google.com (или любой другой). Если google.com недоступен (по разным причинам) делать вывод, что во всем виновато GPRS соединение и его надо перезапустить.
|
|
|
|
|
Aug 19 2009, 16:50
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Чет вы не въехали. При чем тут google.com? Вы должны слать запрос на DNS сервак который вам сообщает APN вашего провайдера. Если уж этот сервак не работает то у вас вообще ничего не работает. Сессию точно надо рвать. Тестить DNS можете любой служебной командой, например A для all Протокол общения с DNS идет как раз по UDP, значит и работу своего сокета узнаете. Цитата(meister @ Aug 19 2009, 09:22)  Мне вот это очень не нравится. Мне надо будет "периодически" закрывать соединение и получать адрес google.com (или любой другой). Если google.com недоступен (по разным причинам) делать вывод, что во всем виновато GPRS соединение и его надо перезапустить. Ну эт вы от незнания наверно. Во первых провайдерские NAT-ы пробиваются теми же STUN-ами только по UDP, а по TCP пробить NAT можно только тунелированием. Но TCP тунелирование тоже не все NAT-ы пропускают. С другой стороны ошибочно думать, что TCP самый лучший из протоколов для надежной доставки. Есть куча протоколов с надежной доставкой работающих поверх UDP. Тот же L2TP Цитата(av-master @ Aug 19 2009, 14:15)  А мое имхо такое. UDP годится для чатов и не более.. а в M2M и Embedded нужно более надежные каналы использовать... минимум TCP + свой контроль...
|
|
|
|
|
Aug 20 2009, 12:43
|

Местный
  
Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484

|
Стал смотреть про SD и QDNS, чтобы с ними работать нужно ипользовать набор команд "Easy GPRS", там сокеты настраиваются командой SCFG. Это проходит: Код AT+CGDCONT=4,"IP","internet.mts.ru" Вот это: Код AT#SCFG=1,4,300,90,150,50 возвращает "ERROR". Набор команд с одним соединением работает (SKTD).
|
|
|
|
Сообщений в этой теме
meister Как определить разрыв UDP сокета на Telit GC864Q? Aug 18 2009, 11:13 av-master послать ченить и не получить ответа... Aug 18 2009, 11:54 meister Цитата(av-master @ Aug 18 2009, 15:5... Aug 18 2009, 11:56 av-master как ты себе это представляеш?
а ну с терминалки к... Aug 18 2009, 12:08 meister Цитата(av-master @ Aug 18 2009, 16:0... Aug 18 2009, 12:36 =F8= Цитата(meister @ Aug 18 2009, 14:13) Посл... Aug 18 2009, 12:57 meister Цитата(=F8= @ Aug 18 2009, 16:57) Никак, ... Aug 18 2009, 13:52  =F8= Цитата(meister @ Aug 18 2009, 16:52) А ес... Aug 18 2009, 15:00  =F8= Цитата(meister @ Aug 19 2009, 09:22) Мне ... Aug 19 2009, 06:55 AlexandrY Как вариант периодически опрашивать DNS сервер, ко... Aug 19 2009, 05:16 av-master А мое имхо такое.
UDP годится для чатов и не более... Aug 19 2009, 11:15 =F8= Цитата(av-master @ Aug 19 2009, 14:1... Aug 19 2009, 12:05 av-master Лишние байты никуда не деваются... что по UDP нужн... Aug 19 2009, 22:01 bolmoe я с 863 работал...
Я просто работал по протоколу T... Aug 24 2009, 10:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|