![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
> Если прибор не получает подтверждения более 2 мин, то разрывает связь
И опять же не факт что сервер мгновенно отследит этот разрыв. |
![]() |
![]() |
![]() |
#12 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Т.о., ожидаемое время завершения работы Close или Free составит не более 3 мин (дифолтный таймаут чтения/записи сокета клиентского соединения)
|
![]() |
![]() |
![]() |
#13 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
да, ты был прав. Если я закрываю сокет со стороны сервера, и после цикла ничинаю снова в цикли принимать пока буфер не пуст, то сервер будет висеть всегда, ибо клиент и не думает прерывать соединение. Нет у него такого параметра. Темный лес какой-то. Вот скажи, ты писал подобные приложения на блокирующих многопоточных сокетах? Если да, покажи код обработки данных, вкл/выкл сокета-потока и т.п. Если несложно, конечно
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#14 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
слушай, а как форсировать разрыв со стороны сервера? Серверу и отслеживать ничего в принципе и не нужно. Если сервер не получает пакеты более 2 мин, то должен сам отключать сокет. Думаю, надо создавать в сокетном классе структуру таймера, и активировать его после каждого получения пакета.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#15 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
ладно, тогда конкретный вопрос:
можете на примерах показать смысл работы функций WaitForData и Select? Как я понимаю, отличие блокирующих от неблокирующих соркетов в том, что если данные были отправлены в сокет, то получающая сторона не сможет отправить ответ, пока не получит эти данные, разгрузив тем самым сокет. В неблокирующих же все строится на событиях(на мнговенных передаче и приеме). Если я не прав, поправьте. И пожалуйста, кто-нибудь может ДОХОДЧИВО объяснить, как сделать друнаправленную передачу (прием и отправка) данных в клиенте и сервере? Кроме mss никто больше и не откликнулся ![]()
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#16 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Все понятно. Либо вы все не знаете, либо не хотите делиться опытом. Что обидно, в нубских темах на тупые вопросы типа "а как мне программно создать 100 кнопок?" ответов море. А сокеты, кажется, вообще глухая тема. Или может все вотпусках и ответить некому...хз. Короче, если кто поможет дельным советом, буду очень рад.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#17 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Здраствуйте еще раз. Выяснил чисто случайно, читав литературу про winsock, что функции select и WaitForData используются для неблокирующих сокетов (далее речь идет про TCPServer и TCPClient). Теперь мой сервер принимает данные и корректно отсылает подтверждение устройству. НО! Возник вопрос, как ОГРАНИЧИТЬ время ожидания данных в сокете (ReceiveLn) и время отсылки (SendLn). Т.е. если функции не возвращают управление определенное время, то считать попытку взаимодействия (приема/отдачи) провалившейся и начать заново. Можете подсказать по этому поводу? Каким образом вы решаете подобную проблему, или делаете это совершенно по-другому? Буду очень благодарен за рассуждения, мысли и советы.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#18 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Все, разобрался. Тема закрыта.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[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 |