![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про Socket [D6, Win95/98, NT4, Win2k]
samalex © (2003-12-18 14:19:00)
Уважаемые Знатоки!!!
Написаны программы, использующие для обмена данными сокеты. Серверная программа при помощи ServerSocket рассылает периодически данные подсоединенным ClientSocket.
Вопрос - как ClientSocket узнать, что связи с ServerSocket нет (сеть оборвана или ServerSocket выключили ...). Желательно, стандартными средствами.
Fredericco (2003-12-19 13:41:00) [1]
2 Mouse (18.12.03 19:52) [13]
Нет, про TClient(Server)Socket.
Verg (2003-12-19 13:01:00) [2]
> Серверная программа при помощи ServerSocket рассылает периодически
> данные подсоединенным ClientSocket.
Ну вот клиент и должен эту периодичность контролировать. Как только от сервера нет данных (никаких) в течении какого-либо периода, то можно считать соединение с сервером "умершим" и закрыв его, пытаться установить снова.
Mouse (2003-12-18 19:52:00) [3]
Извините за глупый вопрос, Это вы про компонеты
TCPServer(Socket)/TCPClient(Socket) говорили или про что?
Fredericco (2003-12-18 16:06:00) [4]
samalex (18.12.03 15:05) [8]
Disconnect - это метод.
Digitman (2003-12-18 15:39:00) [5]
Удалено модератором
Примечание: Оффтоп...
samalex (2003-12-18 15:26:00) [6]
Digitman ©
Спасибо, заработало ...
Digitman (2003-12-18 15:08:00) [7]
> это может влиять?
нет, не может
если клиент успешно подключился к серверу и после этого в серверном приложении выполнена строка ServerSocket.Close, то клиент обязательно получит событие OnDisconnect()
samalex (2003-12-18 15:05:00) [8]
Fredericco ©
Disconnect - это что? команда?
А если программа зависла?
Digitman ©
Да ClientSoccket.ClientType = ctNonBlocking, правда клиент и сервер работают на одном компе ... это может влиять?
able (2003-12-18 15:03:00) [9]
Используй try...except, и пингуй сервак..
Digitman (2003-12-18 15:02:00) [10]
> Выключаю ServerSocket
ну , разумеется, если под этим подразумевать нажатие кнопки Power на сист.блоке, то у клиента, не выполняющего в этот момент никаких гнездовых операций, никаких сигналов об "отвале" сервера не будет)
Digitman (2003-12-18 14:59:00) [11]
если ClientSoccket.ClientType = ctNonBlocking, то быть того не может, чтобы при ServerSocket.Close клиент не получил OnDisconnect()
Fredericco (2003-12-18 14:58:00) [12]
2 samalex (18.12.03 14:56) [3]
Дык, перед выключением сервера делай всем клиентам Disconnect.
samalex (2003-12-18 14:56:00) [13]
Digitman
Я это уже пробовал. Выключаю ServerSocket, а у ClientSocket OnError, OnDisconnect - нет реации.
Fredericco (2003-12-18 14:33:00) [14]
> сеть оборвана
Стандартных средств - нет. Надо самому организовывать проверку на "живучесть".
Digitman (2003-12-18 14:23:00) [15]
обрабатывать событие OnError, OnDisconnect и исключения, возникающие при вызове методов приема / передачи