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
İNDYSERVER1Server uygulama yapmak istiyenler için çok amaçlı protokoldür bir çok uygulama geliştire bilirsiniz (http,ftp,tcp,mirc) gibi
IDTCPSERVERIdtcpserver1.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

eski yazı ki

Ynt: Indy Bileşenleri 1 Gönderen: kocaturk Tarih: 02 March 2008 20:28:51

Benim gibi admin olursa

2005 de yazılmış yazıyı yeni gibi görürsen böyle olur. Evet
@akrep in laneti tüm siteyi sarmış galiba.


Ynt: Indy Bileşenleri 1 Gönderen: FetihlerFatihi Tarih: 02 March 2008 20:44:58
Ben dedim değil mi
