Delphi 7'de server ve client olayı

Delphi 7'de server (sunucu) ve client(şube) olayı nasıl yapılır, ne işe yarar?

Delphi 7'de ağ üzerinde çalışan programlar mı yapmak istiyorsunuz? O zaman bu server ve client olayını iyi anlamalı ve uygulamalısınız önce..

Şimdi örnek olarak basit chat programıyla konuya açıklık getirelim. Program iki parçadan oluşuyor. Bir parçası ana kısım olan server, diğeri de şube yani diğer bir deyişle client..

SERVER TARAFI


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Sockets, StdCtrls;



type

  TForm1 = class(TForm)

    TcpServer1: TTcpServer;

    Label1: TLabel;

    Edit1: TEdit;

    Memo1: TMemo;

    Label2: TLabel;

    procedure TcpServer1Accept(Sender: TObject;

      ClientSocket: TCustomIpClient);

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.TcpServer1Accept(Sender: TObject;

  ClientSocket: TCustomIpClient);

  VAR

  X:String;

  begin

Edit1.Text:=ClientSocket.RemoteHost;

X:=ClientSocket.Receiveln();// PORTU OKUR

Memo1.Lines.Add(X);// MEMOYA AKTARIR

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

TcpServer1.LocalPort:="20000";//string tip

TcpServer1.Active:=True; // 20000 numaralı portu dinlemeye alır



end;



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

TcpServer1.Close;

end;



end.



CLIENT TARAFI


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, XPMan, StdCtrls, Buttons, Sockets, ComCtrls;



type

  TForm1 = class(TForm)

    XPManifest1: TXPManifest;

    StatusBar1: TStatusBar;

    Edit1: TEdit;

    BitBtn1: TBitBtn;

    TcpClient1: TTcpClient;

    Memo1: TMemo;

    procedure BitBtn1Click(Sender: TObject);

    procedure TcpClient1Connect(Sender: TObject);

    procedure TcpClient1Disconnect(Sender: TObject);

    procedure TcpClient1Error(Sender: TObject; SocketError: Integer);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



 



procedure TForm1.BitBtn1Click(Sender: TObject);

VAR

A:String;

begin

A:=Memo1.Lines.Text;

TcpClient1.RemoteHost:=Edit1.Text;

TcpClient1.RemotePorT:="20000";

TcpClient1.Active:=False;

TcpClient1.Active:=True;

TcpClient1.Sendln("SELAM");

end;



procedure TForm1.TcpClient1Connect(Sender: TObject);

begin



end;



procedure TForm1.TcpClient1Disconnect(Sender: TObject);

begin



end;



procedure TForm1.TcpClient1Error(Sender: TObject; SocketError: Integer);

begin



end;



procedure TForm1.FormCreate(Sender: TObject);

begin



end;



end.



İşte bu kadar kodları inceleyip yorumlarsanız olayı kapacağınıza eminim.. Başka türlü anlatılabilirdi belki ama uygulamalı daha iyi anlaşılacağını düşündüğüm için bu yolu tercih ettim.. Herkese başarılar..
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

• 13 yıl önce
Bu programı .rar 'layıp atmanız mümkün mü ? Çözemedimde ben olayı..
• 13 yıl önce
PAYLAŞIM İÇİN TEŞEKKÜRLER
• 13 yıl önce
Keşke neler kullanıldığınıda yazsaymışınız örneği yapmamız daha kolay olurdu ama genede çok teşekkürler
• 13 yıl önce
kodları vermeniz güzel ama neyi nasıl yaptığını biraz değinseniz güzel olurdu. yeni başlayanlar için/ki ben/ açıklamalı olurdu...
• 13 yıl önce
Arkadaşlar kodlardan neler kullanıldığını çıkarmayı göstersek daha yerinde olacak galiba.. Kodlarda procedure deyiminden sonra bir nokta olur ve noktanın ardından kullanılan bileşenin adı ve numarası yazar. Eğer bileşene özel isim verilmemişse -ki örneklerimizde verilmemiştir- orijinal adından çıkarılır bileşenin ne olduğu ve numarası da kaç tane olduğunu gösterir bize.. Zira Delphi Form üzerine attığımız bileşenlere otomatik olarak 1'den başlamak üzere ismin ardından numara verir..
• 12 yıl önce
biraz daha detaya gir seniz güzzel olacak ne ler kullanacamı bilmiyorum ben yeni başladım.ama gende sol emeğe saygı aline sağlık
• 12 yıl önce
evet daha detaylı olsa memnun kalacam. kolay gelsin.
• 12 yıl önce
hocam bu işi internet üzerinden nasıl yapabilicez ben bir program yazıyorum kısaca özet geçersek ana makınede değişiklik yapıldığında diğer uzak mesafe pclerinde yapılan değişikliğin aynen görünmesini istiyorum.Değişikliği sadece ana makınedeki kullanıcı yapabılmeli.Kullanıcılar bu programa mudahale edememli.ana makınede yazılacak, onlarda sadece görüntülenecek bu tarzda olacak programı nasıl yapabilirim.Programın internet baglantısını onlara gönderıcegim mesajları nasıl yapabilirim.Saygılar..
• 12 yıl önce
Dediğin şekilde bir programda server kısmı ana makine olur, client de kullanıcı olur. Kullanıcının programındaki girişleri (edit, radiobutton vs.) yazıma kapatırsın böylece onlar gönderim yapamaz, yalnızca ana makina tarafından gönderilenleri görebilirler. İnternet üzerinden yapabileceğin bir programdır bu ve bu olaydan hiç bir farklı mantık taşımaz. ip numaralarını kullanman gerekir ki bu programın da zaten mantığı budur. Kolay gelsin..
• 12 yıl önce
valla ben baya uğraştım galiba aynı bilg. içinde yaptığım içinmi çalışmıyor :agla::agla:
• 12 yıl önce
görsel dili yazılı olarak ve resim desteği olmadan anlamak zor. keşke nasıl yapıldığını görsel olarak anlatsaydın.
• 9 yıl önce
Çok teşekkürler. Bunu çok arıyordum. Bana karanlık bir tarafı olmadı. Herşeyi anladım :D
• 9 yıl önce
Anlayamayanlar için forumda bir yazı yazdım: [url=http://www.sanalkurs.net/forum/delphi/server-client-anlamayanlar-icin-ders/]tıklayın[/url]
• 9 yıl önce
Yalnız bu dersiniz orjinal değil. Başka bir siteden kopyalanmış. [url=http://denizyildirim.net/oku.php?id=42]Orjinali için tıklayın[/url]
• 9 yıl önce
Kardeşim başkalarının üzerine basarak bir yerlere yükselmek gayretinde olmayın lütfen. Verdiğiniz linkteki dosya 2008'e, bu ders ise 2007'ye ait. Bu durumda oradaki bilgiler mi burdan alınmış oluyor, buradakiler mi oradan bunun izahını da okurlar yapsın. Ama bir siteyi reklam için güzel bir yöntem. Hem bir ay önce de bu olayı çok aradığınızı, her şeyi anladığınızı yazmışsınız. Neyse fazla söze ne hacet, iki yerde aynı bilgi varsa önce tarihine bakın derim ben..
• 8 yıl önce
tamam
• 8 yıl önce
özür dilerim tarihi görmemişim :(

Yukarı Git