Yazilim Öğrenmenin Tek Adresi...
Daha İyi Bir Hizmet İçin Lütfen Üye Olunuz...
Yazilim Öğrenmenin Tek Adresi...
Daha İyi Bir Hizmet İçin Lütfen Üye Olunuz...
Yazilim Öğrenmenin Tek Adresi...
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Yazilim Öğrenmenin Tek Adresi...

En Kapsamlı Visual Basic Sitesi
 
AnasayfaAramaLatest imagesKayıt OlGiriş yap
Giriş yap
Kullanıcı Adı:
Şifre:
Beni hatırla: 
:: Şifremi unuttum
Arama
 
 

Sonuç :
 
Rechercher çıkıntı araştırma
En son konular
» C İle Banka Otomasyonu Acill
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimeC.tesi Ocak 09, 2010 4:51 pm tarafından Ebubekir_Kara

» C++'la yapılmış basit ATM programı
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimeÇarş. Ara. 02, 2009 4:43 am tarafından 1221ibrahim

» Bir Oyunda Puan Sistemi Yapma
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePtsi Kas. 02, 2009 1:49 pm tarafından KonYalıCoder

» Ipconfig Komutu
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:33 pm tarafından OguzhanUyanik

» Çalıştır Komutları
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:33 pm tarafından OguzhanUyanik

» Domain Adresleri
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:32 pm tarafından OguzhanUyanik

» Msconfig Nedir? Ayarları ve Özellikleri
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:32 pm tarafından OguzhanUyanik

» Windows Vista & Türkçe Kurulumu Resimli anlatım!
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:31 pm tarafından OguzhanUyanik

» Format atmak ve Türkçe windows xp kurulumu (resimli anlatım)
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:31 pm tarafından OguzhanUyanik

» Windows Xp Hızlandırma
Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePaz Eyl. 13, 2009 5:30 pm tarafından OguzhanUyanik

En iyi yollayıcılar
OguzhanUyanik (472)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
mehmet bozer (78)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
asi_esra (4)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
mysterious_el (4)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
1221ibrahim (3)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
igny (3)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
tarkantr2000 (2)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
myildiz.16 (2)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
KAPORTACI (2)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 
tolgakesan (2)
Delphi Indy bileşenkeri ile ağ programlaması Vote_lcapDelphi Indy bileşenkeri ile ağ programlaması I_voting_barDelphi Indy bileşenkeri ile ağ programlaması Vote_rcap 

 

 Delphi Indy bileşenkeri ile ağ programlaması

Aşağa gitmek 
YazarMesaj
OguzhanUyanik
Mareşal
Mareşal
OguzhanUyanik


Yengeç Mesaj Sayısı : 472
Kayıt tarihi : 31/08/09
Yaş : 31
Nerden : Konya
İş/Hobiler : Bilgisyar-Yazılım
Lakap : Nediz

Delphi Indy bileşenkeri ile ağ programlaması Empty
MesajKonu: Delphi Indy bileşenkeri ile ağ programlaması   Delphi Indy bileşenkeri ile ağ programlaması Icon_minitimePerş. Eyl. 10, 2009 11:57 pm

Delphi'de yerleşik olarak bulunan indy bileşenleri ile soket programlama konusunu ele alalım.

Bu derste şunları ele alacağız:

* Ağ programları,sunucu ve kullanıcı olmak üzere iki kısımdır.

* Indy bileşenleri ile ağ programlaması yapılabilir.

* İletişim için IdTCPServer ve IdTCPClient bileşenlerinin IP ve Port özellikleri ayarlanır.

* IdThreadMgrDefault bileşeni, sunucuya bağlanan her bir kullanıcı için bir kanal oluşturur.

* IdTcpServer ın OnConnect olayı, IdTCPClient ın Connect komutuyla sunucuya bağlanmasıyla gerçekleştirilecek işlemleri içerir.

* Sunucuya bağlanan her kullanıcı, sunucunun kullandığı TThreadList nesnesine eklenir.Ve her bağlantıda, kullanıcı bilgileri, TIdPeerThread nesnesinin Data özelliğine atanır.

* Write ve Read komutlarının farklı formatlarıyla, yazma ve okuma işlemleri gerçekleştirilir.Sunucu tarafında, TIdPeerThread nesnesininn Connection sınıfının Write veya Read özellği kullanılır. TIdTCPClient ın ise, kendi okuma ve yazma fonksiyonları ile işlemler gerçekleştirilir.

* Bağlantı, IdTCPServer ın Active özellğinin false yapılması veya kullanıcı tarafında, bağlantının TIdTCPClient ın Disconnect komutuyla sonlandırılması gibi işlemlerle sonlandırılır.

1. GİRİŞ

Günümüzde kullanılan sistemlerin önemli bir kısmında, yapılan işlemler, bir noktadan kontrol edilme mantığıyla yürütülmektedir.Üretilen projeler, genellikle ağa(network) yöneliktir.Bu da ağ programcılığını öğenmeyi kaçınılmaz kılmaktadır.
Bu nedenle, bu makalede, Delphi'de yerleşik olarak bulunan indy bileşenleri kullanılarak ağ ortamında programlama konusu işlenecektir.

2. TEMEL BİLGİLER ve ÖRNEK KODLAR

Ağda çalışan uygulamalar, kullanıcı ve sunucu (client/server) olmak üzere iki kısımdan oluşur.
Indy bileşenlerinden, Indy Servers sekmesindeki IdTCPServer, sunucu; Indy Clients sekmesindeki IdTCPClient ise kullanıcı programında kullanılır.Indy kanal(thread) problemini kendi içinde çözmüştür.Indy Misc sekmesindeki IdThreadMgrDefault adlı bileşen ile sunucuya her bağlanan kullanıcı için ayrı bir kanal oluşturulur ve böylece aynı anda sunucuya bağlanmaya çalışan kullanıcılar arasında bir çatışma oluşmaz.Bu bileşen de IdTCPServer ile ThreadMgr özelliğinden ilişkilendirilir.

Bir sunucu ile kullanıcının etkileşimi için bazı ayarlar yapılmalıdır.Bunlar genellikle formun OnCreate olayında belirtilir.

Yapılması gereken ayarlar:

i. Sunucunun ip özelliğinin,sunucuya bağlanan kullanıcının ip si; kullanıcının ip özelliğinin de sunucunun ip si olarak ayarlanması,

ii. İletişim için kullanılan port numarasının ayarlanması,

iii. Sunucunun aktif hale getirilmesi.

A. Sunucunun(Server) Özelliklerinin Ayarlanması:

İp ve port un belirlenmesi , IdTCPServer ın Bindings özelliğinde belirtilir.

Bindings := TIdSocketHandles.Create(IdTCPServer);
try
with Bindings.Add do
begin
IP := '127.0.0.1';
Port := 7575;
end;
try
TCPServer.Bindings := Bindings;
TCPServer.Active := True;
except on E:Exception do
ShowMessage(E.Message);
end;
finally Bindings.Free;
end;



Sunucuya bağlanan kullanıcılar,sorunsuz bir kanal modeli için TThreadList sınıfından türetilen bir nesnede depolanırlar."KullaniciListesi", TThreadList sınıfının bir örneği olarak varsayılırsa, yine formun OnCreate olayında aşağıdaki ayarlamalar gereklidir:

KullaniciListesi := TThreadList.Create;
KullaniciListesi.Duplicates := dupAccept;



Kullanıcılar, bir nesne şeklinde bu "KullaniciListesi" nesnesine eklenirler. Her bir kullanıcı, sunucuya bağlandığı anda bu listeye eklenir.Bunun için kullanıcı ile ilgili bilgilerin tutulduğu, bir kayıt oluşturulup, bu kayıt bir nesne şeklinde "KullaniciListesi" nesnesine eklenir.Ve bağlantı koptuğunda da listeden çıkarılır.

Bu işlemler için ilgili kodlamalar aşağıdaki gibidir:

type
Kullanici= ^TKullanici;
TKullanici = record
HostName : String[20]; { Hostname }
PeerIP : string[15]; { Kullanıcıt IP adresi}
Thread : Pointer; { Kanala işaretçi(pointer)}
end;
...
procedure Form1.IdTCPServerConnect(Kanal: TIdPeerThread);
var
YeniKullanici: Kullanici;
begin
GetMem(YeniKullanici, SizeOf(TClient));

YeniKullanici.PeerIP := Kanal.Connection.Socket.Binding.PeerIP;
YeniKullanici.HostName := GStack.WSGetHostByAddr(YeniKullanici.PeerIP);
YeniKullanici.Thread := Kanal;

Kanal.Data := TObject(YeniKullanici);

try
KullaniciListesi.LockList.Add(YeniKullanici);
finally
KullaniciListesi.UnlockList;
end;
end;
[code]

B. Kullanıcının(Client) Özelliklerinin Ayarlanması:

İp ve port değerleri, IdTCPClient ın Host ve Port özelliklerine girilir.Ve IdTCPClient ın Connect komutuyla bağlantı sağlanır.

[code]
try
IdTCPClient.Host := '127.0.0.1';
IdTCPClient.Port := 7575;
IdTCPClient.Connect;
except on E: Exception do
ShowMessage( 'Bağlantı Yok');
[code]

Kullanıcının, sunucuya bağlandığında yapılması istenen işlemler ise, IdTCPServer ın OnExecute olayında belirtilir.

Ağ programlarında normalde iletişim kullanıcının sunucuya istek göndermesiyle başlar.Ve ardışık okuma ve yazma işlemleri ile iletişim sürdürülür ve sonlandırılır.IdTcpClient ın farklı formatlardaki yazdırma fonksiyonları ile sunucuya komut gönderilmiş olur. Sunucu ise IdTCPServer ın uygun formattaki okuma fonksiyonları ile gönderilen bilgiyi okur.Ve sunucu, gerekliyse doğrulama amaçlı, yeni bir mesaj gönderir. Bu da kullanıcı tarafından okunur. Ve böylece veri alışverişi güvenli bir şekilde gerçekleşmiş olur.

Örnek bir iletişim şu şekilde olabilir:

i. Kullanıcı, sunucuya talepte bulunur:

[code]IdTCPClient.WriteLn('Yazdırma İsteği');



ii. Sunucu, kullanıcıdan gelen isteği okur:

gelenistek:=Kanal.Connection.ReadLn;



iii. Okunan komuta bağlı olarak program içinde gerekli işlemler yapılır.

iv. İşlemlerin yapıldığı kullanıcıya bildirilir:

Kanal.Connection.WriteLn('İşlem Tamam.');



v. Kullanıcı işlem sonucunu okur ve böylece doğrulama tamamlanmış olur:

IdTCPClient.ReadLn;



Kullanıcı istek göndermeyi formun OnShow olayı,buton tıklaması gibi bir olayla başlatabilir. Sunucuda bu işlemler IdTCPServer ın OnExeceute olayında gerçekleştirilir.

Kodlaması aşağıdaki gibi olabilir:

procedure TMainFormServer.TCPServerExecute(Kanal: TIdPeerThread);
var
Client: Kullanıcı;
IstekTalebi: string;
begin

if not Kanal.Terminated and Kanal.Connection.Connected then
begin
Client := Kullanici(Kanal.Data);
IstekTalebi := Kanal.Connection.ReadLn;

if IstekTalebi = 'Yazdırma İsteği' then
begin
...
end;
Kanal.Connection.WriteLn('İşlem Tamam.');
end;
end;



Bağlantının sonlandırılması ile ilgili kodlamalar da, genellikle formun OnClose olayında belirtilir.
Buradaki kodlamalar aşağıdaki gibi olabilir:

Sunucu Tarafı:

IdTCPServer.Active:=False;
KullaniciListesi.Free;
Kullanıcı Tarafı:
IdTCPClient.Disconnect;
Sayfa başına dön Aşağa gitmek
https://yazilimnet.yetkin-forum.com
 
Delphi Indy bileşenkeri ile ağ programlaması
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Delphi'de Alias Tanımlama
» Delphi Formumuza Saat Ekleyelim..
» Delphi program formunuzu titretin!
» Delphi'de Görsel Bir ToolBar Hazırlayalım
» Delphi ile Veritabanı Tablosu Oluşturma

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Yazilim Öğrenmenin Tek Adresi... :: Masaüstü Programlama :: Delphi-
Buraya geçin: