Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2010, 17:41   #11
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> Если прибор не получает подтверждения более 2 мин, то разрывает связь

И опять же не факт что сервер мгновенно отследит этот разрыв.
mss вне форума Ответить с цитированием
Старый 27.07.2010, 17:47   #12
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Т.о., ожидаемое время завершения работы Close или Free составит не более 3 мин (дифолтный таймаут чтения/записи сокета клиентского соединения)
mss вне форума Ответить с цитированием
Старый 27.07.2010, 18:20   #13
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

да, ты был прав. Если я закрываю сокет со стороны сервера, и после цикла ничинаю снова в цикли принимать пока буфер не пуст, то сервер будет висеть всегда, ибо клиент и не думает прерывать соединение. Нет у него такого параметра. Темный лес какой-то. Вот скажи, ты писал подобные приложения на блокирующих многопоточных сокетах? Если да, покажи код обработки данных, вкл/выкл сокета-потока и т.п. Если несложно, конечно
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 27.07.2010, 18:40   #14
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

слушай, а как форсировать разрыв со стороны сервера? Серверу и отслеживать ничего в принципе и не нужно. Если сервер не получает пакеты более 2 мин, то должен сам отключать сокет. Думаю, надо создавать в сокетном классе структуру таймера, и активировать его после каждого получения пакета.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 29.07.2010, 07:14   #15
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

ладно, тогда конкретный вопрос:
можете на примерах показать смысл работы функций WaitForData и Select? Как я понимаю, отличие блокирующих от неблокирующих соркетов в том, что если данные были отправлены в сокет, то получающая сторона не сможет отправить ответ, пока не получит эти данные, разгрузив тем самым сокет. В неблокирующих же все строится на событиях(на мнговенных передаче и приеме).
Если я не прав, поправьте. И пожалуйста, кто-нибудь может ДОХОДЧИВО объяснить, как сделать друнаправленную передачу (прием и отправка) данных в клиенте и сервере? Кроме mss никто больше и не откликнулся
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 30.07.2010, 07:19   #16
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Все понятно. Либо вы все не знаете, либо не хотите делиться опытом. Что обидно, в нубских темах на тупые вопросы типа "а как мне программно создать 100 кнопок?" ответов море. А сокеты, кажется, вообще глухая тема. Или может все вотпусках и ответить некому...хз. Короче, если кто поможет дельным советом, буду очень рад.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 02.08.2010, 07:21   #17
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Здраствуйте еще раз. Выяснил чисто случайно, читав литературу про winsock, что функции select и WaitForData используются для неблокирующих сокетов (далее речь идет про TCPServer и TCPClient). Теперь мой сервер принимает данные и корректно отсылает подтверждение устройству. НО! Возник вопрос, как ОГРАНИЧИТЬ время ожидания данных в сокете (ReceiveLn) и время отсылки (SendLn). Т.е. если функции не возвращают управление определенное время, то считать попытку взаимодействия (приема/отдачи) провалившейся и начать заново. Можете подсказать по этому поводу? Каким образом вы решаете подобную проблему, или делаете это совершенно по-другому? Буду очень благодарен за рассуждения, мысли и советы.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 04.08.2010, 12:01   #18
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Все, разобрался. Тема закрыта.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] TCPserver, TCPclient MASSIOMO Работа с сетью в Delphi 14 29.07.2010 17:53
TCPServer, TCPClient seobot Общие вопросы Delphi 2 03.05.2010 23:56
TCPClient, TCPServer : SendBufer() Zeraim Работа с сетью в Delphi 4 27.12.2009 21:22
TcpClient и TcpServer DOLBY Работа с сетью в Delphi 5 17.12.2007 10:43
TCPServer и TCPClient Antoha Работа с сетью в Delphi 19 06.10.2007 12:01