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..