IdTCPClient i IdTCPServer - prosty przykład użycia
rk7771
INDY - Internet Direct (komponenty otwarte)
Prosty przykład użycia komponentów INDY: IdTCPClient oraz IdTCPServer do przesyłania np.: wiadomości tekstowych.
Oto kod źródłowy z najważniejszych procedur:
procedure Tform.FormCreate(Sender: TObject);
begin
//ustawienie portów dla klienta oraz serwera
IdTCPClient1.Port := 35000;
IdTCPServer1.DefaultPort := 35000;
//Aktywacja Serwera - nasłuchiwanie
if not IdTCPServer1.Active then
begin
IdTCPServer1.Active := true;
end;
end;
//jakaś procedura wywoływana po naciśnieciu np.: klawisza
procedure Tform.wyslij();
begin
if Edit1.Text <> '' then
begin
form.IdTCPClient1.Host := Edit1.Text;
IdTCPClient1.Connect(30);
if IdTCPClient1.Connected then
begin
//Wysłanie wiadomości - tekst z RichEdit
form.IdTCPClient1.Write(richedit2.Lines.Text);
RichEdit2.clear;
form.IdTCPClient1.Disconnect;
end;
end;
end;
procedure Tform.IdTCPServer1Connect(AThread: TIdPeerThread);
var
wiad_all : string;
wiad_adr : string;
begin
wiad_all := Athread.Connection.AllData;
wiad_adr := Athread.Connection.Socket.Binding.PeerIP;
//Sprawdzenie naszego adresu lokalnego
IdIPWatch1.HistoryEnabled := false;
local_ip := IdIPWatch1.LocalIP;
IdIPWatch1.Free;
//odebranie wiadomości
if wiad_adr <> local_ip then
begin
//Wprowadzenie wiadomości do RichEdit
Richedit1.SelAttributes.Size := 9;
RichEdit1.SelAttributes.Color := clBlack;
RichEdit1.SelAttributes.Style := [];
RichEdit1.Lines.Add(wiad_all);
//Rysowanie na ekranie (pulpicie)
Canvas.Handle:=GetWindowDC(GetDesktopWindow);
Canvas.Rectangle(X_screen-220, Y_screen-75, X_Screen-5, Y_screen-55);
Canvas.Font.Name := 'MS San Serif';
Canvas.Font.Size := 8;
Canvas.Font.Color := clBlack;
Canvas.TextOut(X_screen-210, Y_screen-70, 'Tele - ' + wiad_adr + ' nowa wiadomość');
end;
end;
Zawiera błędy, dodatkowo nie działa.
Przydało się, dzięki :)