ExtraForum - 1299 Private Serverlar - Server Dosya Paylaşımları

Güncel Paylaşım Forumu !
 
AnasayfaTakvimGaleriSSSAramaKayıt OlGiriş yap
Eğlence Başladı Rütbeni Seç! TIKLA
Moderatör Alımı Başladı TIKLA

Paylaş | 
 

 DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ

Aşağa gitmek 
YazarMesaj
ALPA
Site Kurucusu
Site Kurucusu
avatar

Mesaj Sayısı : 815
Nerden : Ankara
Kayıt tarihi : 02/03/09
Rep Puanı Rep Puanı : 32

MesajKonu: DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ   Çarş. Nis. 22, 2009 11:55 am

DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ

Delphi bizlere ağ üzerinden veri iletimini sağlayan birçok nesne sunmaktadır (Internet, intranet, local). Bu makalede 2 Delphi bileşeni üzerinde inceleme yapacağız: TserverSocket ve TclientSocket. Bu iki bileşen TCP/IP bağlantıda okuma ve yazma işlemleri için tasarlanmıştır. Bu makalede ağ üzerinde iletişim kuran basit bir uygulama yapacağız.

Winsock ve Delphi soket bileşenleri

Windows soketleri veya Winsock, Microsoft Windows altında network programlama için bir açık arayüzdür. Winsock, protokol yığın servislerine ulaşabilmek için bize bir takım fonksiyonlar, veri yapıları v.b. imkanlar sunar.


Delphi soket bileşenleri, başka sistemlerle TCP/IP üzerinden ve ilgili diğer protokoller aracılığı ile iletişim kuran uygulamalar yazmanızı sağlar. Soketleri kullanarak, bağlantı üzerinden, nasıl bir network yapısının varolduğu hakkında herhangi bir endişeye kapılmadan diğer makinalarile haberleşmek mümkündür.


TServerSocket ve TClientSocket bileşenleri ile TcpClient, TcpServer ve TudpSocket bileşenleri Delphi bileşen araç çubuğunun Internet paletinde yer almaktadır.


Belirli bir network üzerinde özel bir servise nasıl ulaşılır

En basit cevap; Client makine servise mesaj göndermek için izine sahiptir ve gönderimden sonra karşıdan cevap bekler. Bir network de bunu yapmanın (gönderme veya okuma) en pratik yolu soketleri kullanmaktır.


Porlar ve Hostlar

Bir soket bağlantısı için, soket bileşeni kullanılır. Host ve port belirli yapılara sahiptir. Genelde host, server sisteminin IP adresi için bir takma ad belirtir (Alias). Port ise, server soket bağlantı numarısı olan ID yi belirtir.

Basit bir TEK-YÖN gönderim yapan program

Şimdi bu uygulamayı Socket bileşenlerini kullanarak nasıl yaptığımıza bir bakalım. İki form oluşturacağız. Birisi SERVER için diğeri CLIENT bilgisayarımız için olacak. Amacımız; Client makinadan TEXT yazısını SERVER makinamıza göndermek olacak.


Başlamadan once, Delphi’yi 2 kez çalıştırın. Bir projeyi Client uygulama için diğerinide Server uygulama için kullanacağız.


SERVER tarafı


Formumuzun üzerinde bir tane TServerSocket bileşeni ve bir tane de Tmemo bileşeni koyunuz. Görünümümüz şu şekilde olacaktır:

Ve formumuzun OnCreate olayını aşağıdaki şekilde oluşturunuz:


Alıntı:
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port := 23; //port numaramız
ServerSocket1.Active := True; //soketimizi aktif yaptık
end;

formumuzun OnClose olayınıda aşağıdaki hale çeviriniz:


Alıntı:
procedure TForm1.FormClose
(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Active := false; //Aktifliğini iptal ediyoruz.
end;

CLIENT tarafı


Client uygulamamız için, bir tane TClientSocket, bir tane Tedit ve bir tanede Tbutton bileşenini formumuza ekleyelim. Formumuz aşağıdaki gibi görünecektir:

Bu formumuzun da kodlarını aşağıdaki şekilde oluşturalım


Alıntı:
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Port := 23;
ClientSocket1.Host := ‘10.9.5.1'; //Bölgesel TCP/IP server adresi
ClientSocket1.Active := true; //Soketimizi aktif yaptık
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientSocket1.Active := false; //Soketimizi pasif yaptık
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ClientSocket1.Active then //Eğer soketimiz aktif ise
ClientSocket1.Socket.SendText(Edit1.Text); //Edit ın içeriğini gönderiyoruz
end;

Zaten kod kendini çok basit bir şekilde ifade ediyor. Client tarafından butonumuza basıldığında Edit1’in içeriğindeki Text ifade, belirlenmiş port ve host adresi ile Server’ımıza gönderilecektir.


SERVER’a geri dönelim


Bu örnek için son uygulamamız şu olcak: Server’a veri gönderen Client’ları görelim. Bunun için OnClientRead olayını kullanacaz. Bu olay Server soketi Client’tan bir veri okuduğu anda gerçekleşecektir.


Bu kodumuzda (Server formumuzda) şu şekilde olacaktır:


Alıntı:
procedure Tform1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

Ama programımız sağlıklı çalışmayacaktır. Çünkü birden fazla Client makina Server’a veri göndermeye kalkarsa ne olcak? Bu durumda kodumuzda ufak tefek bir kaç değişiklik işimizi görecektir:


Alıntı:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i:integer; //Client makina sayısı için
text : string; //Gelen veriyi okumak için
begin
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
with ServerSocket1.Socket.Connections[i] do
begin
text := ReceiveText; //okunan veri sRec’ e atanır.
if text <> '' then //eğer text boş değil ise
begin
Memo1.Lines.Add(RemoteAddress + ' sends :'; //Gönderenin adresi
Memo1.Lines.Add(text); //ve gönderdiği Text Memo’ya eklenir.
end;
end;
end;
end;
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör http://www.weyyo.com
BANNED
Level 1
Level 1


Mesaj Sayısı : 14
Kayıt tarihi : 16/05/09
Rep Puanı Rep Puanı : 0

MesajKonu: Geri: DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ   C.tesi Mayıs 16, 2009 9:20 am

bu yani neye yarıo bana 1cümle ile açıklarmısın lütfen?
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör
 
DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Disko Network

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ExtraForum - 1299 Private Serverlar - Server Dosya Paylaşımları :: Delphi-
Buraya geçin:  

weyyo

knight online serverlar

metin2 serverlar

silkroad serverlar