Arşiv Anasayfa VCL (Delphi Visiual Component Library)
Sayfalar: 1
Indy Bileşenleri 1 Gönderen: xbarakuda Tarih: 08 October 2005 19:31:30
INDY BİLEŞENLERİ 1
İ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

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


                                 IDTCPCLİENT BÖLÜMÜ

Formunuza iki button indyclient tabından ıdtcpclient iki edit bir tane de memo koyun gerekli kodları yazın

:
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




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

Ynt: Indy Bileşenleri 1 Gönderen: usiel Tarih: 29 February 2008 23:07:18
saol hocam işime bay ayarayacak.

Ynt: Indy Bileşenleri 1 Gönderen: kocaturk Tarih: 01 March 2008 23:17:53
Patron hoş geldin. Askerlik bittimi yoksa ??
Ynt: Indy Bileşenleri 1 Gönderen: FetihlerFatihi Tarih: 02 March 2008 16:49:12
Patron hoş geldin. Askerlik bittimi yoksa ??
anlayamadım Huh eski yazı ki Razz
Ynt: Indy Bileşenleri 1 Gönderen: kocaturk Tarih: 02 March 2008 20:28:51
  Benim gibi admin olursa Smile 2005 de yazılmış yazıyı yeni gibi görürsen böyle olur. Evet @akrep in laneti tüm siteyi sarmış galiba. SmileSmile
Ynt: Indy Bileşenleri 1 Gönderen: FetihlerFatihi Tarih: 02 March 2008 20:44:58
Ben dedim değil mi Cheesy