Bu bileşen ile Remote, Chat , Online Game,Dosya Transferi velhasıl TCP ip ile hayal gücünüze bağlı olrak herşeyi rahatlıkla yapabilirsiniz.
Indy,Delphi Internet vs. vs. diğer bileşenlerinin artıları yanı sıra bir çok artısı daha var.

yukarıdaki even listesinden neler yapabileceğinzi pekala görebilirsiniz.

Örnek teşkil etmesi için alel acele bir chat programı yazdım.
Hepinizin işine yaraması dileğiyle.
Program irc benzeri bir biçimde çalışıyor.
Server programı bir bilgisayarda çalıştırılacak
Client Programı ise sınırsız bilgisayardan çalıştırılablir (Teorik olarak

Bir kişinin yazdığı mesajı diğer bağlı kişiler de görebilir.
Server

Client

Server kısmında istekleri kabul et kutucuğunu işaretleyip kaydet butonuna tıklayın
Örnek Chat Programı
Fast TCP Componenti veya Fast TCP Componenti
Client Kısmı
Kod: Tümünü seç
unit fmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FasterTCP, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
cl: TFasterTCPClient;
Durum: TStatusBar;
Panel1: TPanel;
Label1: TLabel;
xuser: TEdit;
xip: TEdit;
xport: TEdit;
baglan: TButton;
Label2: TLabel;
Label3: TLabel;
Panel2: TPanel;
Panel3: TPanel;
lchat: TMemo;
xchat: TEdit;
procedure clDisconnected(Sender: TObject);
procedure clConnected(Sender: TObject);
procedure baglanClick(Sender: TObject);
procedure clMessageCome(Sender: TObject; TheMessage: String);
procedure xchatKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.clDisconnected(Sender: TObject);
begin
durum.Panels[1].Text:='Bağlantı yok';
baglan.Caption:='Bağlan';
end;
procedure TForm1.clConnected(Sender: TObject);
begin
durum.Panels[1].Text:='Bağlantı sağlandı';
baglan.Caption:='Bağlantıyı kes';
end;
procedure TForm1.baglanClick(Sender: TObject);
begin
if cl.Connected then
begin
cl.Connected:=false;
exit;
end;
with cl do
begin
Connected:=False;
Host:=xip.Text;
Port:=strtointdef(xport.Text,20000);
UserName:=xuser.Text;
Room:='XXL';
try
Connected:=True;
except on e : exception do
durum.Panels[1].Text:='Hata :'+e.Message;
end;
end;
end;
procedure TForm1.clMessageCome(Sender: TObject; TheMessage: String);
begin
if TheMessage='WHO' then begin cl.Send('ITSMINE',7);exit;end;
lchat.Lines.Add(themessage);
end;
procedure TForm1.xchatKeyPress(Sender: TObject; var Key: Char);
begin
if key<>#13 then exit;
cl.Send(pchar(cl.UserName+' :'+ xchat.Text),length(cl.UserName+' :'+xchat.Text));
lchat.Lines.Add(cl.UserName+' :'+ xchat.Text);
xchat.Text:='';
end;
end.
Kod: Tümünü seç
unit fmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, FasterTCP, StdCtrls, ExtCtrls;
type
Tmain = class(TForm)
SV: TFasterTCPServer;
Panel1: TPanel;
GroupBox1: TGroupBox;
liste: TListView;
kabul: TCheckBox;
xport: TEdit;
Label1: TLabel;
Button1: TButton;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
lchat: TMemo;
Panel5: TPanel;
xchat: TEdit;
procedure listele();
procedure ayarsakla();
procedure ayaryukle();
procedure mesajgonder(no : integer;mesaj : string);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure kabulClick(Sender: TObject);
procedure SVClientConnected(Sender: TObject;
Client: TFasterTCPServerClient);
procedure SVClientMessageCome(Sender: TObject;
Client: TFasterTCPServerClient; TheMessage: String);
procedure SVClientDisconnected(Sender: TObject;
Client: TFasterTCPServerClient);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure listeClick(Sender: TObject);
procedure xchatKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
main: Tmain;
ROOTF : string;
implementation
{$R *.dfm}
// Kullanıcı Tanımlı Prosedür ve Fonksiyounlar
procedure tmain.listele();
var
i : integer;
tCl: TFasterTCPServerClient;
begin
liste.items.Clear;
for i:=0 to sv.Clients.Count-1 do
begin
tcl:=sv.clients.items[i];
liste.Items.Add;
liste.Items[liste.Items.Count-1].Caption:=tcl.UserName;
liste.Items[liste.Items.Count-1].SubItems.Add(tcl.Host);
end;
end;
procedure tmain.ayarsakla();
var s : tstrings;
begin
s:=tstringlist.Create;
s.Clear;
s.Add('PORT='+xport.Text);
s.SaveToFile(rootf+'Ayarlar.ini');
s.Free;
end;
procedure tmain.ayaryukle();
var s : tstrings;
begin
if not fileexists(rootf+'Ayarlar.ini') then exit;
s:=tstringlist.Create;
s.Clear;
s.LoadFromFile(rootf+'Ayarlar.ini');
xport.Text:=s.Values['PORT'];
s.Free;
end;
procedure tmain.mesajgonder(no : integer;mesaj : string);
var tCl: TFasterTCPServerClient;
begin
tcl:=sv.clients.items[no];
sv.Send(tcl,pchar(mesaj),length(mesaj));
end;
procedure Tmain.FormActivate(Sender: TObject);
begin
sv.Listen:=kabul.Checked;
ayaryukle;
end;
procedure Tmain.Button1Click(Sender: TObject);
begin
sv.Listen:=false;
sv.Port:=strtointdef(xport.text,2000);
sv.Listen:=kabul.Checked;
ayarsakla;
end;
procedure Tmain.kabulClick(Sender: TObject);
begin
sv.Listen:=kabul.Checked;
end;
procedure Tmain.SVClientConnected(Sender: TObject;
Client: TFasterTCPServerClient);
begin
sv.Send(Client,'WHO',3);
end;
procedure Tmain.SVClientMessageCome(Sender: TObject;
Client: TFasterTCPServerClient; TheMessage: String);
var i : integer;
begin
if TheMessage='ITSMINE' then begin listele ;exit;end;
lchat.Lines.Add(TheMEssage);
for i := 0 to liste.Items.Count-1 do
if liste.Items[i].Caption<>client.UserName then
mesajgonder(i,TheMessage);
end;
procedure Tmain.SVClientDisconnected(Sender: TObject;
Client: TFasterTCPServerClient);
begin
listele;
end;
procedure Tmain.FormCreate(Sender: TObject);
begin
rootf:=extractfilepath(paramstr(0));
end;
procedure Tmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ayarsakla;
end;
procedure Tmain.listeClick(Sender: TObject);
begin
if liste.ItemIndex<0 then exit;
end;
procedure Tmain.xchatKeyPress(Sender: TObject; var Key: Char);
var i : integer;
begin
//if liste.ItemIndex<0 then exit;
if key<>#13 then exit;
if liste.Items.Count=0 then exit;
lchat.Lines.Add('Admin :'+xchat.Text);
for i := 0 to liste.Items.Count-1 do
mesajgonder(i,'Admin :'+xchat.Text);
xchat.Text:='';
end;
end.
Kolay gelsin