Форум: "Сети";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизПочему клиент не получает сообщение? Найти похожие ветки
← →
Leny (2002-08-01 13:52) [0]При закрытии серверного приложения сервер посылает всем клиентам сообщение (описано в procedure TServer.FormClose).
Почему клиент не получает это сообщение (принимаю его в TClient.ClientSocket1Read)?
← →
Digitman (2002-08-01 14:26) [1]В синхронном режиме это будет и в FormClose работать.
Но у тебя как помнится - асинхронный режим. Это означает, что закрытие гнезда происходит раньше, чем полностью отработает send-метод.
Иными словами, вызываемый тобой send-метод не блокирует выполнение последующих операторов в обработчике FormClose на время РЕАЛЬНОЙ передачи данных, а лишь ставит запрос на передачу в очередь, и после этого выполнение продолжается со след.строчки. Как только выполнится весь обработчик, у тебя, очевидно, разрушается и сам объект-форма, вместе с компонентом TServerSocket, так и не успевшим передать все то, что было поставлено в очередь на передачу.
← →
Digitman (2002-08-01 14:29) [2]Еще раз заострю твое внимание на том, что очер. твоя проблема - из той же опреры, что и предыдущая : из-за непонимания различий в работе гнезд в блокирующем (синхронном) и неблокирующем (асинхронном) режимах ...
Почитала бы уж что-нибудь на эту тему, давно пора .. да повнимательней ..
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c