Server - Client, Как избавится от ошибки клиента
Есть две проги сервер и клиент, которые построены на базе компонетов TServetSocket и TClientSocket. К серверной части пока вопросов нет, а вот к клиентской есть. Все работает отлично, принимает и отсылает, но при отсутствии сервера клиент ругается и выдает вот ошибку № 10061 или в крайнем случае № 10054. Ну это еще ладно, при долговременном отсутствии сервера клиент совсем перестает выдавать ошибки и уже не реагирует на сеть, не помогает даже отключение сокета и его повторное включение, нужно заново запускать клиента.
Как от этих всех ошибок избавиться и чтобы клиент мог нормально работать неограниченное время без серверной части, а при загрузке сервера подключаться к нему.
1. Первое, сделай два потока, основной (в котором выполняется главная программа клиента).
2. И вторичный, в котором отслеживается соединение с сервером и если оно отсутствует, то устанавливается снова.
3. Введи глобальную переменную отслеживаения соединения (например: boolean Connected).
4. Во вторичном потоке введи таймер (со сбросом в 0).
В первичном потоке:
if (Connected == true)
{
try
{
// основное тело программы работы с сервером.
}
catch(...)
{
Connected == false;
}
}
else
{
}
Во вторичном потоке:
Тело таймера:
{
if (Connected == false)
{
try
{
ClientServer->Connect;
if (ClientServer->Connected == true)
{
Connected = true;
}
else
{
Connected = false;
}
}
catch(...)
{
Connected = false;
}
}
else
{
}
// Функция сброса таймера в ноль.
}
Что-то в этом роде.
Названия компонентов условные.-)