Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.01 c
3-73480
Morgan3212
2002-08-27 16:13
2002.09.23
БД


14-73884
Digitman
2002-08-29 12:30
2002.09.23
Отличное наглядное пособие для новичков в Delpi Object Pascal )


7-73912
Vasyl
2002-07-12 02:10
2002.09.23
5


1-73595
France
2002-09-12 10:23
2002.09.23
Удалить выделенные пункты в ListBox


6-73801
SerVS
2002-07-18 01:06
2002.09.23
DIGEST-MD5





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский