Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

TIdTCPServer, TIdTCPClient   Найти похожие ветки 

 
Анонимщик ©   (2004-04-14 01:10) [0]

У сервера есть метод OnDisconnect. Я так понимаю, событие срабатывает, когда клиент отваливается? Что-то не выходит. Помогите начинающему.


 
Rouse_ ©   (2004-04-14 01:25) [1]

Ну насколько я помню данное событие происходит не когда клиент "отваливается", а когда он выполняет соответствующий метод...


 
Анонимщик ©   (2004-04-14 01:35) [2]

А как поймать отваливание?


 
Rouse_ ©   (2004-04-14 01:57) [3]

Ну давай думать логически - id предназначен дл совместимости с Linux стало быть Асинхронка тебе заказана :)
На сколько я помню работает все это в блокирующем режиме стало быть событий не ищи - вывод?
Вспоминаем как работают сокеты в данном состоянии, вот там и найдешь решение проблемы...


 
Анонимщик ©   (2004-04-14 02:02) [4]

Черт побери. Извини, я действительно редко сокетами занимаюсь. Мне ведь действительно асинхронный режим нужен.
Чем посоветуешь воспользоваться?


 
Rouse_ ©   (2004-04-14 02:13) [5]

Тут я плохой советчик, так как пользуюсь исключительно WinSock, думаю Verg или Digitman будут более компетентны...


 
Анонимщик ©   (2004-04-14 03:10) [6]

Тогда тебе спасибо.


 
Digitman ©   (2004-04-14 08:28) [7]


> Анонимщик


чем плохи TServerSocket/TClientSocket ? imho, ничем .. асинхронный режим оба поддерживают .. совершенно прозрачный транспортный механизм .. простота и наглядность .. никаких излишеств ..


 
Erik ©   (2004-04-14 09:36) [8]

А еще можно логически подумать, если клиент долго неотвечает, то можно послать ему тестовый пакет. Нет ответа значить отвалился.


 
Rouse_ ©   (2004-04-14 09:38) [9]

> [8] Erik ©   (14.04.04 09:36)
Это ж тебе не UDP...


 
Verg ©   (2004-04-14 09:56) [10]

Если говорить именно про сервер (TIdTCPServer), событие OnDisconnect возникает, когда поток созданый этим компонентом для обработки входящего клиентского подключения обнаруживает разрыв соединения.
Обнаружить это он может только если при исполнении (OnExecute) он вызывает методы Read**, Write** и т.п. прямо или косвенно.

Т.е., например, если в OnExecute делать так:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
 sleep(10);
end;

то никакого OnDisconnect никогда не произойдет. Мало того поток связанный с этим соединением так и будет продолжать работать, даже если сам клиент уже давным давно отсоединился.

Блокирующие сокеты сами по-себе никому ничего не сообщают.
С ними надо "общаться", чтобы узнать о их состоянии.

Предыдущий пример заменим на

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
 AThread.Connection.ReadFromStack(false, 100, false);
end;


 
Anvar Turakulov   (2004-04-21 09:40) [11]

Удалено модератором
Примечание: Последний раз повторяю. Задай свопрос в своей ветке и в ней же и жди ответа. Незачем мусорить в других...



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

Форум: "Сети";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1085314726
Master Paleva
2004-05-23 16:18
2004.06.06
Процедура ReplaceDate


14-1084881510
Liona
2004-05-18 15:58
2004.06.06
Ищу трудоголика.


14-1085056902
IntelusJob
2004-05-20 16:41
2004.06.06
Требуется программист Delphi, в Питере.


1-1085582726
hamster
2004-05-26 18:45
2004.06.06
Bmp в DLL


14-1085088303
Алхимик
2004-05-21 01:25
2004.06.06
Ораторское искусство г.Жириновского





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский