indy giriş

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

indy giriş

Mesaj gönderen Fatih! »

INDY BİLEŞENLERİ
İ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.
IDTCPCLİENT BÖLÜMÜ

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

Resim

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.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Makale @xbarakud'ya aittir. ben netten anlamam :)
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Makalenin başında ona ait olduğu söylenmiş zaten ...
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

:oops: :oops: :oops: ilgi alanım olmadığı için makaleyi okumadım :)
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Afadersiniz ya , ben
Makale @xbarakud'ya aittir. ben netten anlamam
cümlesini başka birisinin söylediğini sandım , zaten onu da siz yazmışsınız .
Ben başka biri yazdı diye, bir anda sizin adınıza savunma moduna geçmiştim :)

Bir an da olsa kendinizi kötü hissettirdiysem özür dilerim .
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Estağfirullah hocam. beni kolladığını öğrendim hiç olmazsa :)
artık kimse bana ilişemez 8) :)
Cevapla