Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.23;
Скачать: CL | DM;

Вниз

Вопрос по сетям.   Найти похожие ветки 

 
Jo   (2002-07-11 12:39) [0]

TServerSocket, TClientSocket
На одной машине запушен сервер. На другой клиент. Принудительно разрываю связь. Как на клиенте отследить, что связь с сервером потеряна? Отправляю данные SendBuf, даже ошибку не выдает, что связь разорвана.


 
Fiend ©   (2002-07-11 12:44) [1]

То Jo
Я именно с эти компонентами не работал. Не знаю как они живут.
Но вот у меня есть приложение с поименованными каналами, в принципе подобная фишка. Может тебе их лучше использовать?

Достаточно просто. И работает абсолютно одинаково, независимо от того работаешь через сеть или обращаешся локально на машине.

Есть всякие функции, которые возвращают состояние коннекта. Да и когда передаёшь данные, сразу узнаешь, передались они или нет.

Могу нарезать примеров


 
Digitman ©   (2002-07-11 12:55) [2]

Организуй квитирование сообщений.

В ответ на запрос передающей стороны принимающая сторона должна ответить сообщением, подтверждающим прием запроса. Если, например, на 5-кратное повторение запроса (с опредеделенной задержкой между посылками очередных) передающей стороной в заданный период времени от принимающей стороны не получена "квитанция", подтверждающая прием, запрашивающая сторона должна разорвать логическое соединение по своей инициативе как недостоверное.
Это - концептуально. Как это реализовать - думай, вариантов - море. Но без событий и таймеров не обойтись.


 
Jo   (2002-07-11 13:04) [3]

ммда, геморойчик
All thx. To Fiend, если не сложно подкинь примеры, может что интересное найду.
wbr


 
Jo   (2002-07-11 13:44) [4]

Тут проблема в том, что у отпраляются много пакетов(мною сформированные) и если все время ждать подтверждение получения пакета, то клиентская часть будет все время стопариться. Плюс к этому, неизвестно сколько времени уходит на обработку данных от других клиентов.

---
И еще, я не пойму одного, данные отправляются TCP/IP пакетами. Но TCP должен же гарантировать что IP-дейтаграмма принята, или это не так?


 
Digitman ©   (2002-07-11 14:15) [5]

TCP гарантирует тебе, что в ответ на SYN-пакет передатчик получит от приемника как минимум :

ACK-пакет;
RST-пакет;

в данной ситуации передатчик ни черта не получит от приемника, поскольку физ.связь отсутствует, без нее логическая связь (на уровне собственно TCP-протокола) невозможна.

вместо этого локальная Winsock-подсистема в ответ на SYN-пакет передатчика должна вернуть ошибку таймаута, коей ты, видимо, не дожидаешься, потому как она не мнгновенно возвращается : значение тайм аута, скажем, может быть не менее минуты.


 
вумный ©   (2002-07-18 08:37) [6]

Я решил эту проблему так:
Посадил клиента на таймер(минута-вполне подходит) по отправке сообщений серверу
Перед отправкой нового сообщения проверяю вернулось ли прежнее
Если вернулось, то считаю сервер в работе.
Если нет, то извини.



Страницы: 1 вся ветка

Текущий архив: 2002.09.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-73685
KidMan
2002-09-10 22:52
2002.09.23
Вторая загрузка одного и того же модуля


1-73597
ZSV
2002-09-12 10:06
2002.09.23
StringGrid и Report


7-73901
soldat
2002-06-27 11:00
2002.09.23
фискальный регистратор


1-73691
pasha_golub
2002-09-10 15:39
2002.09.23
Отслеживание операций с файлами


1-73612
sdram
2002-09-12 11:52
2002.09.23
OnSetText