Programowanie w języku Delphi » Gotowce

IdTCPClient i IdTCPServer - prosty przykład użycia

  • 2005-12-26 23:41
  • 2 komentarze
  • 2493 odsłony
  • Oceń ten tekst jako pierwszy
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;

2 komentarze

adydan 2012-12-27 00:07

Zawiera błędy, dodatkowo nie działa.

michak 2008-07-17 17:31

Przydało się, dzięki :)