Форум: "Сети";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизВопрос по сетям. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c