реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> GPRS and RealTime, возможно ли
AlexandrY
сообщение Mar 5 2009, 11:27
Сообщение #31


Ally
******

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



А вот это не разговор.
Что такое TcpServer ? В какой среде написан?
TcpServer::close_connect() - это что, процедура вызываемая вами, хендлер ивента, сам обработчик ивента?
Windows сокеты могут держать соединение многие годы после того как связь с объектом пропала, т.е. серверу в вопросе связи меньше всего доверять можно.
Смотрите логи снифера, а не сервера.

Цитата(GP_ @ Mar 5 2009, 12:23) *
Со стороны сервера выглядит так: TcpServer::accept_new_connections - принял соединение, TcpServer::close_connect() - отвалился
Разрыв связи - промежуток времени от close_connect до accept_new_connections.
Go to the top of the page
 
+Quote Post
M_Z
сообщение Mar 5 2009, 11:57
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(AlexandrY @ Mar 5 2009, 15:27) *
А вот это не разговор.
Что такое TcpServer ? В какой среде написан?
TcpServer::close_connect() - это что, процедура вызываемая вами, хендлер ивента, сам обработчик ивента?
Windows сокеты могут держать соединение многие годы после того как связь с объектом пропала, т.е. серверу в вопросе связи меньше всего доверять можно.
Смотрите логи снифера, а не сервера.

Вот именно!
Или вполне информативным является лог сервера, но сравнивать нужно разницу времен события(время события указанное в сообщении), и время серверное в которое было принято сообщение. Таким образом можно получить времена задержек, что является главным параметром передачи информации в реальном времени. И вобщем то не столь важно был разрыв соединение и его востановили или сообщение передавалось минуту(такое тож бывает. Соединение не разрывалось а сообщение передается десятки секунд).
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 6 2009, 07:47
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Разрыв соединения - это отсутствие от сервера TCP-пакетов подтверждения (ACK) на TCP-пакеты запросов клиента в течении заданного интервала времени,
либо обмен пакетами по временной диаграмме "соединение закрыто".

Для AlexandrY. Вы пишете: "Windows сокеты могут держать соединение многие годы после того как связь с объектом пропала"
Это не так. При обмене по протоколу TCP используется специальный Keep Alive таймер для периодического обмена пакетами с целью обнаружения активности клиента и сервера. По этому таймеру соединение будет закрыто.
Go to the top of the page
 
+Quote Post
M_Z
сообщение Mar 6 2009, 08:24
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(etoja @ Mar 6 2009, 10:47) *
Разрыв соединения - это отсутствие от сервера TCP-пакетов подтверждения (ACK) на TCP-пакеты запросов клиента в течении заданного интервала времени,
либо обмен пакетами по временной диаграмме "соединение закрыто".

Для AlexandrY. Вы пишете: "Windows сокеты могут держать соединение многие годы после того как связь с объектом пропала"
Это не так. При обмене по протоколу TCP используется специальный Keep Alive таймер для периодического обмена пакетами с целью обнаружения активности клиента и сервера. По этому таймеру соединение будет закрыто.

Мы сталкивались ситуацией, когда GSM модем попросту выключить питание при активном конекте, то то на сервере соединение якобы оставалось активным.
Если модем выключать корректно, то тогда все окей. Сервер тудже понимает что соединение разорвано.
Так что на практике ситуация когда сервер якобы держит соединение с GSM модулем, который давно уже выключен абсолютно реальна.
Go to the top of the page
 
+Quote Post
GP_
сообщение Mar 6 2009, 08:59
Сообщение #35


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 30-07-07
Пользователь №: 29 450



Цитата(AlexandrY @ Mar 5 2009, 13:27) *
А вот это не разговор.

Отставить распихивать огурцы по дырам twak.gif
"Поставте направленные антены."
Тогда "объясните что в вашем понимании""направленные антены"
Антенны, которые стоят на базовых станциях, относятся к направленным? Или антенны РЛС? Или может вы будете возражать против утверждения, что любая антенна с ненулевой электрической длиной будет направленной? Или вы хотели сказать более эффективные антенны?
По сути.
Я не являюсь разработчиком серверного программного обеспечения. В программный комплекс входит программа, которая установлена под win nt, и, собственно, обрабатывает входящие TCP соединения. Она формирует несколько логов. В одном из логов фиксируются различные события. Я выбрал события с заголовком TcpServer. Предполагаю что событие accept_new_connections означает both the client and server have received an acknowledgment of the connection.
2009-03-06 01:14:56:187 TcpServer::accept_new_connections() new connection 192.168.5.1:53418 connects.size()=2
С закрытием сложнее.
2009-03-06 00:45:18:031 GsmIpDevice::do_read_connection() 192.168.5.1:61195: Socket was closed
2009-03-06 00:45:18:031 TcpServer::close_connect() 192.168.5.1:61195
Или
2009-03-06 01:19:47:015 TcpServer::validate() connection 192.168.5.1:61763 expired (прим., встречается редко)
Во втором случае, думаю, сервер закрывает. В первом даже затрудняюсь сказать, кто закрываает.

Сообщение отредактировал GP_ - Mar 6 2009, 09:05
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 6 2009, 09:04
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(M_Z @ Mar 6 2009, 11:24) *
Мы сталкивались ситуацией, когда GSM модем попросту выключить питание при активном конекте, то то на сервере соединение якобы оставалось активным.
Если модем выключать корректно, то тогда все окей. Сервер тудже понимает что соединение разорвано.
Так что на практике ситуация когда сервер якобы держит соединение с GSM модулем, который давно уже выключен абсолютно реальна.


Соединение должно быть закрыто сервером при молчании клиента более 20 минут. Пользуйтесь UNIX сервером, вместо Windows и всё будет правильно.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 6 2009, 10:57
Сообщение #37


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Соединение должно быть закрыто сервером при молчании клиента более 20 минут.


Да ну? Откуда такое требование? Не говоря уже о том, что RFC1122 говорит о двухчасовом периоде Keep-Alive по дефолту.

Другое дело, что 2 часа - весьма занадто для GPRS. Так что лучше выбрать время поменьше. Правда, под виндой это время устанавливается единоразово ключем в реестре. Так что для портабельности лучше делать собственный Keep-Alive в виде маленького пакетика данных, посылаемого с нужным периодом.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 6 2009, 11:10
Сообщение #38


Ally
******

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



Пока видно, что дивайсы используют адреса из подсети с диапазоном всего в 254 адреса.
Поскольку сервер сообщает о закрытии сокета значит либо он явно получает команду о закрыти либо сам инициирует закрытие.
Контроль Keep Alive проходит гораздо реже, раз в 2-а часа где-то по умолчанию.
Т.е. ваши разрывы никак не связаны с фиксацией самими сокетами долгого отсутствия связи.

Еще раз советую поставить снифер на компе сервера и смотреть его лог.
Ну а лучше и безопасней делать внешний TCP стек в дивайсах. Будет гораздо проще отлаживать такие проблемы.


Цитата(GP_ @ Mar 6 2009, 10:59) *
2009-03-06 01:14:56:187 TcpServer::accept_new_connections() new connection 192.168.5.1:53418 connects.size()=2
С закрытием сложнее.
2009-03-06 00:45:18:031 GsmIpDevice::do_read_connection() 192.168.5.1:61195: Socket was closed
2009-03-06 00:45:18:031 TcpServer::close_connect() 192.168.5.1:61195
Или
2009-03-06 01:19:47:015 TcpServer::validate() connection 192.168.5.1:61763 expired (прим., встречается редко)
Во втором случае, думаю, сервер закрывает. В первом даже затрудняюсь сказать, кто закрываает.



И это еще не значит что сокет закроется.
В либах Indy сокеты ничего не сообщат даже через 2-а часа молчания. Там просто нет такого ивента.
И кстати приводят довольно убедительное обоснование такой философии.
В частности утверждая что это (в смысле управление тайм-аутами подключений) должно определяться характером приложения и очень индивидуально.

Цитата(Rst7 @ Mar 6 2009, 12:57) *
Да ну? Откуда такое требование? Не говоря уже о том, что RFC1122 говорит о двухчасовом периоде Keep-Alive по дефолту.

Другое дело, что 2 часа - весьма занадто для GPRS. Так что лучше выбрать время поменьше. Правда, под виндой это время устанавливается единоразово ключем в реестре. Так что для портабельности лучше делать собственный Keep-Alive в виде маленького пакетика данных, посылаемого с нужным периодом.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 6 2009, 11:20
Сообщение #39


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
И это еще не значит что сокет закроется.
В либах Indy сокеты ничего не сообщат даже через 2-а часа молчания. Там просто нет такого ивента.


Да пусть авторы Делфи вместе со своими компонентами с разбегу об стену убъются smile.gif

Есть вменяемый интерфейс для сокетов - bsd. А поделки Борланда - это от лукавого.

Цитата
В частности утверждая что это (в смысле управление тайм-аутами подключений) должно определяться характером приложения и очень индивидуально.


А это как раз вполне логично. Ганц логиш по фашистски smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 09:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016