...

Листинг 11.17.

Закрытие соединения с клиентом (при возникновении ошибки)

procedure ErrorCloseConnection(Connection: TIdTCPServerConnection);

var

clError: client; //Информация о пользователе, соединение

//с которым прервалось (только имя и IP)

begin

//Отключим соединение, работающее с ошибками

clError := DeleteClient(Connection);

//Сообщим об отключении остальным пользователям

SendAll(\'deluser:\' + clError.strName);

SendAll(\'Нас покинул «\' + clError.strName + \'».’);

//Добавим событие в журнал

if (REPORT) then AddEvent(\'Из-за ошибки отсоединен клиент "\' +

clError.strName + \'" на компьютере «\' + clError.strIP + \'»\');

end;

Процедура RegisterClient, приведенная в листинге 11.18, регистрирует пользователя под указанным в сообщении name: именем (ранее выполнялась функция AddClient, которая нашла для записи этого пользователя место в MaccHBeclients). Если имя, под которым хочет зарегистрироваться пользователь, уже используется, то клиентской программе посылается соответствующее уведомление, после чего соединение разрывается.

Загрузка...