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

Вниз

Про Socket   Найти похожие ветки 

 
samalex   (2003-12-18 14:19) [0]

Уважаемые Знатоки!!!

Написаны программы, использующие для обмена данными сокеты. Серверная программа при помощи ServerSocket рассылает периодически данные подсоединенным ClientSocket.
Вопрос - как ClientSocket узнать, что связи с ServerSocket нет (сеть оборвана или ServerSocket выключили ...). Желательно, стандартными средствами.


 
Digitman ©   (2003-12-18 14:23) [1]

обрабатывать событие OnError, OnDisconnect и исключения, возникающие при вызове методов приема / передачи


 
Fredericco ©   (2003-12-18 14:33) [2]


> сеть оборвана

Стандартных средств - нет. Надо самому организовывать проверку на "живучесть".


 
samalex   (2003-12-18 14:56) [3]

Digitman
Я это уже пробовал. Выключаю ServerSocket, а у ClientSocket OnError, OnDisconnect - нет реации.


 
Fredericco ©   (2003-12-18 14:58) [4]

2 samalex (18.12.03 14:56) [3]
Дык, перед выключением сервера делай всем клиентам Disconnect.


 
Digitman ©   (2003-12-18 14:59) [5]

если ClientSoccket.ClientType = ctNonBlocking, то быть того не может, чтобы при ServerSocket.Close клиент не получил OnDisconnect()


 
Digitman ©   (2003-12-18 15:02) [6]


> Выключаю ServerSocket


ну , разумеется, если под этим подразумевать нажатие кнопки Power на сист.блоке, то у клиента, не выполняющего в этот момент никаких гнездовых операций, никаких сигналов об "отвале" сервера не будет)


 
able ©   (2003-12-18 15:03) [7]

Используй try...except, и пингуй сервак..


 
samalex   (2003-12-18 15:05) [8]

Fredericco ©
Disconnect - это что? команда?
А если программа зависла?

Digitman ©
Да ClientSoccket.ClientType = ctNonBlocking, правда клиент и сервер работают на одном компе ... это может влиять?


 
Digitman ©   (2003-12-18 15:08) [9]


> это может влиять?


нет, не может

если клиент успешно подключился к серверу и после этого в серверном приложении выполнена строка ServerSocket.Close, то клиент обязательно получит событие OnDisconnect()


 
samalex   (2003-12-18 15:26) [10]

Digitman ©
Спасибо, заработало ...


 
Digitman ©   (2003-12-18 15:39) [11]

Удалено модератором
Примечание: Оффтоп...


 
Fredericco ©   (2003-12-18 16:06) [12]

samalex (18.12.03 15:05) [8]
Disconnect - это метод.


 
Mouse   (2003-12-18 19:52) [13]

Извините за глупый вопрос, Это вы про компонеты
TCPServer(Socket)/TCPClient(Socket) говорили или про что?


 
Verg ©   (2003-12-19 13:01) [14]


> Серверная программа при помощи ServerSocket рассылает периодически
> данные подсоединенным ClientSocket.


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


 
Fredericco ©   (2003-12-19 13:41) [15]

2 Mouse (18.12.03 19:52) [13]
Нет, про TClient(Server)Socket.



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
14-80256
REA
2004-02-06 10:40
2004.02.25
Imagebase


1-79999
MakNik
2004-02-13 09:38
2004.02.25
Таймер для логирования


1-79928
Khabibulin
2004-02-13 21:42
2004.02.25
MP3


14-80222
sucer
2004-01-24 19:09
2004.02.25
---|Ветка была без названия|---


1-79820
romeo
2004-02-10 11:27
2004.02.25
Обработка исключений во время отладки без показа сообщ. об ошибке