İndy bileşenleriyle ben Özkan besinili (xbarakuda) her hafta indyserver indyclient indymisc Tablarından birer kontrolü anlatmaya çalışıcam elimden geldiği kadarıyla
İNDYSERVER1
Server uygulama yapmak istiyenler için çok amaçlı protokoldür bir çok uygulama geliştire bilirsiniz (http,ftp,tcp,mirc) gibi
IDTCPSERVER
Idtcpserver1.defaultport:=kullanmak istediğiniz portu bu kısımdan belirlemelisiniz Idtcpserver1.active:=true server açık kapalımı olmasını belirleyin
Onconnect olayı
Belirlediğimiz porta bağlanmak istiyen biri oldugunda onconnect olayı gercekleşir Bağlantı kurmak istiyen kişinin bilgilerini almak için(athread.Connection.Socket.Binding.PeerIP) yazmanınız yeterlidir.
Porta gelen bilgileri okumak için (athread.Connection.ReadLn);
Bağlantı kuran kişi bilgi göndermek için (athread.Connection.WriteLn('selam hoş geldiniz '))
IDTCPCLİET
İdtcpclient host : bağlantı sağlanacak ip buradan belirleyin.
İdtcpclient port : bağlantı sağlanacak portu belirleyin serverdeki portun aynısı olması şart
İdtcpclient writeln servere mesaj göndermek için kullanılır
İdtcpclient readln : serverden gelen mesajları okuya bilirsiniz.
idtcpclient1.Socket.LocalName servermakinasının ismin örgene bilirsiniz
Diğer yordanları anlatmama gerek yok sanırım biraz mantıkla olayı çözersiniz
Örnek olarak bir program yapalım size bağlantı kuran makinenın cdromunu Açtıralım chat yapan bir basit bir program yapalım
Server bölümü
Bir form hazırlayın bir ındyserver tabından tcpserver bir memo bir checkbox Yerleştirin Aşağıdaki kodu gerekli kısımlara yazın
Kod: Tümünü seç
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
memo1.Lines.Add(athread.Connection.Socket.Binding.IP+'bağlan mak iştiyor ' );
athread.Connection.WriteLn('selam hoş geldiniz ');
athread.Connection.Connected;
if checkbox1.Checked=true then
athread.Connection.WriteLn('cd');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Idtcpserver1.DefaultPort:=1100;
Idtcpserver1.Active:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Idtcpserver1.Active:=false;
end;
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
s:string;
begin
if athread.Connection.Connected then
s:=athread.Connection.ReadLn;
memo1.Lines.Add(s);
end;
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
athread.Connection.Disconnect;
memo1.Lines.Add('bağlantı kesildi');
end;
end.
Formunuza iki button indyclient tabından ıdtcpclient iki edit bir tane de memo koyun gerekli kodları yazın
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject)
var
mesaj:string;
begin
IDTCPclient1.Connect;
IDTCPclient1.Host:=edit2.Text;
DTCPclient1.Port:=1100;
mesaj:=idtcpclient1.ReadLn;
if mesaj='cd' then
mciSendString('Set cdaudio door open', nil, 0, 0)
else
memo1.Lines.Add(mesaj);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
button2.Enabled:=false;
edit2.Text:='10.0.0.11';
end;
procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
button2.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
idtcpclient1.WriteLn(edit1.Text);
end;
end.
Xp işletim siteminde bazı sorunlar vere bilir
INDY MİSC
IdDecoderMIME1 ve IdDecoderMIME1
Metinleri şifreme işine yarar
IdencoderMIME1.Encode şifrelek isdediğiniz metin yada memonun içindeki metni şifreler
IdDecoderMIME1.DecodeString şifreli metini eski haline çevirir
Örnek yazdımız metni şifreleyip kaydeden kayıtlı şifreli metinleri tekrardan açan bir program yazalım
Bir form hazırlayın formunuza bir IdDecoderMIME1 bir IdDecoderMIME1 iki memo
Bir opendialog bir savedialog 4 adet button yerleştirin
Formu bu şekil tasarlaya bilirsiniz

Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
IdencoderMIME1.Encode(memo1.Text);
memo2.Text:=IdencoderMIME1.EncodeString(memo1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
IdDecoderMIME1.DecodeString(memo2.Text); memo1.Text:=IdDecoderMIME1.DecodeString(memo2.Text);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
yol:ansistring;
begin
opendialog1.Title:='dosya seçiniz';
opendialog1.Filter:='txt dosyalari|*.txt|';
if opendialog1.Execute then
begin
yol:=opendialog1.FileName;
memo1.Lines.LoadFromFile(yol);
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
yol:ansistring;
begin
savedialog1.Title:='dosyayı kaydet';
savedialog1.DefaultExt:='txt';
if savedialog1.Execute then
begin
yol:=savedialog1.FileName;
memo1.Lines.SaveToFile(yol);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
yol:ansistring;
begin
opendialog1.Title:='dosya seçiniz';
opendialog1.Filter:='txt dosyalari|*.txt|';
if opendialog1.Execute then
begin
yol:=opendialog1.FileName;
memo2.Lines.LoadFromFile(yol);
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
yol:ansistring;
begin
savedialog1.Title:='dosyayı kaydet';
savedialog1.DefaultExt:='txt';
if savedialog1.Execute then
begin
yol:=savedialog1.FileName;
memo2.Lines.SaveToFile(yol);
end;
end;
end.