Informacja do servera o disconnecie

0

Czy mogłby ktos zinterpretować ten kod i powiedziec mi które informacje mowia o tym ze client nie ma połaczenia z serverem ?? Jest to zdazenie timera w chacie z indy_demos.

procedure TForm1.Timer1Timer(Sender: TObject);
var
Com,
Msg: string;
begin
if not IdTcpClient1.Connected then
exit;

Msg := IdTCPClient1.ReadLn('', 5);

if Msg '' then
if Msg[1] '@' then
begin
{ Not a system command }
memLines.Lines.Add(Msg);
end
else
begin
{ System command }
Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) - 2)));
Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) + 1, Length(Msg))));
if Com = 'CLIENTS' then
lbClients.Items.CommaText := Msg;
end;

end;

Za pomoc z góry dziękuje ...

0

Uzywaj tagow na poczatku kodu i na jego koncu.

Za sprawdzenie czy klient jest polaczony jest odpowiedzialny ten kawalek (to chyba nie jest trudne do wywnioskowania):

if not IdTcpClient1.Connected then
exit;

A reszta:

procedure TForm1.Timer1Timer(Sender: TObject);
var
Com, Msg: string;

begin
if not IdTcpClient1.Connected then
exit;
{jesli nie jestesmy polaczeni to koniec}

if Msg '' then { jesli sa jakies dane to je przetwarzamy dalej}
if Msg[1] '@' then {jesli pierwszy znak rozny od '@'}
begin
{jesli 1 znak rozny od '@' to znaczy, ze nie jest to komenda i przyslany text zostanie dodany do memo (chyba jako wiadomosc)}
memLines.Lines.Add(Msg);
end
else
begin
{jesli 1 znak to '@' to rozdzielamy przyslane dane na czesci}
{do zmiennej Com przypisujemy tekst od drugiego znaku az do znaku ':' (nazwa komendy)}
Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) - 2)));
{do zmiennej Msg przypisujemy tekst od zaku ':' do konca (dane do komendy)}
Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) + 1, Length(Msg))));
if Com = 'CLIENTS' then {oczywiste chyba}
lbClients.Items.CommaText := Msg; { tutaj zdaje sie odswierzamy liste z klientami }
end;

end;

To nie jest skomplikowane. Jesli klient jest polaczony to przetwarza dane. '@' na poczatku przysylanego tekstu oznacza, ze serwer wyslal jakas komende. Wtedy to przyslany tekst zostaje rozdzielony na: nazwe komendy i jakies dodatkowe dane zwiazane z dana komenda.
W tym przpadku (w tym przykladowym programie) zdaje sie jest tylko jedna komenda 'CLIENTS', ktora odswierza liste z klientami.
Jesli wyslesz do klienta taki tekst: '@CLIENTS:klient1' to w liscie lbClients bedzie widoczna jedna pozycja: 'klient1'. Tekst po znaku ':' (dwukropku) zawiera liste userow.
Natomiast jesli wyslesz do klienta tekst nie zawierajacy '@' na poczatku to zostanie on dodany do memo jako zwykla wiadomosc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1