Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
7Activity
0 of .
Results for:
No results containing your search query
P. 1
c#

c#

Ratings: (0)|Views: 465|Likes:
Published by Çağdaş Demirci
biraz karışık bi not
biraz karışık bi not

More info:

Published by: Çağdaş Demirci on May 24, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

04/23/2013

pdf

text

original

 
Bu makalemizde TCP protokolüyle basit bir ClientServer programıyapacağız, C# ile socket programlama yapabilmek için System.Net.Socketsisimalanı altında bulunan sınıfları kullanacağız. Yapacağımız programdaserver bir console uygulaması, client ise windows formlarını kullanarayapacağımız windows uygulaması olacak.Amacımız basit bir ClientServer çatisi kurmak olduğu için uygulamamız çok basit olacaktır. Siz yazınıntamamını dikkatlice incelediğinizde ve yaratıcılığınızı kullandığınızdaçok daha gelişmiş uygulamalar yapabilirsiniz. Belki bir sunucu tabanlıscript dili bile geliştirebilirsiniz ).şimdi yazacağımız programda kullanıcı Windows uygulaması vasıtası ileserver olan programımıza bağlanacak. Form üzerinde bulunan butonatıkladığımızda yine form üzerinde bulunan textbox girişindeki yazıyı server  programımız alacak ve yazıda kaç karakter olduğunu client programınagönderecek.Client program ise bir mesaj kutusu ile kullanıcıya bildirecek.Öncelikle client olan kullanıcıdan mesajın geldiğini düşünürek Server  programımızı yazalım. Server programımızı yazmaya başlamadan önce programda Soket programlama için kullandığımız sınıflara ve onların üyefonksiyonlarına kullandığımız kadarıyla bir göz atalım.TcpListener Sınıfı(System.Net.Sockets)TcpListener sınıfı TCP protokolü ile çalışan servislere bağlanmamızısağlar. Mesela HTTP ve FTP protokolleri TCP servislerini kullanırlar.TcpListener sınıfının kurucu fonksiyonunu 3 değişik şekilde çağırabiliriz.1- )IPEndPoint sınıfını kullanarak IP numarası ve port numarası içeren bir bilgiyi kullanma yolu ile2- )IP adresi ve port numarasını geçerek çağırma3- )Sadece Port numarası ile çağırma.Bu durumda varsayılan ağarayüzünüz TCP servislerini sağlayacaktır.Biz bu programda 3. şıktaki gibi bir kullanımı tercih ettik. public void Start();TcpListener sınıfına ait bu metod network servislerinden ilgili port'udinleyerek verileri almaya başlamamızı sağlar. public Socket AcceptSocket();TcpListener sınıfına ait bu metod veri transferi için geri dönüş değeriolarak bir Socket nesnesi döndürür.Bu geri dönen socket ilgilimakinanın IP adresi ve port numarası ile kurulur.(kurucu işlev ile)Socket Sınıfı(System.Net.Sockets)Socket Sınıfı ile ilgili aşağıdaki örneği inceleyelimSocket s = new Socket(AddressFamily.InterNetwork,
 
SocketType.Stream,ProtocolType.Tcp );Socket sınıfının bu kurucu işlevi parametre olarak AdressFamilydedigimiz adresleme semasi Soket tipi ve kullanacagimiz protokol tipini alir.Bu 3 paremtere de .NET Framework class kütüphanesinde Enum sabitleriolarak tanimlanmistir.Programimizda yazdigimiz Socket IstemciSoketi =TcpDinleyicisi.AcceptSocket(); satiri ile geri dönen soket nesnesinde bu 3 parametredetanimlanmistir. public bool Connected();Bu metod ile Soketin baglanip baglanmadigini geri dönen bool degeri ileanliyoruz.Eger soket hedef kaynaga bagliysa true degilse false degerinegeri döner.NetworkStream Sinifi(System.Net.Sockets) NetworkStream sinifi kurucularindan olan void NetworkStream(Socketx); fonksiyonu ilgili kendisine gönderilen soket nesnesine ait datalari NetworkStream türünden nesnede tutar.bu programda kullandigimiz sokettipi stream oldugu için bu sinifi kullaniyoruz. NetworkStream sinifiiçinde islem yapabilmemeiz için ise System.IO isiamalaninda bulunanStreamReader ve StreamWriter siniflarini kullanacagiz.Ön bilgileri aldığımıza göre server programımızı yazalım. Aşağıdaki ilk kaynak kod server.cs dir. Satır aralarına size yardımcı olabilecek yorumlar ekledim.Kaynak dosyayı özellikle makaleme dosya olarak eklemiyorumki siz aşağıdaki kodları tek tek yazıp daha iyi öğrenin.TcpClient Sinifi(System.Net.Sockets)Tcp servislerine bağlantı sağlamak için TcPClient sınıfı kullanılır.Istemci programımızda TcpClient sınıfının public TcpClient(string,int); kurucu işlevini kullanıyoruz. İlk parametre bilgisayar adı ikincisiise port numarasıdır. public NetworkStream GetStream();Bu metod ile belirtilen port tan gelen veriler bir NetworkStreamnesnesine aktarılır. GetStream metodunun geri dönüş değeri NetworkStreamolduğu için atama işlemini NetworkStream türünden bir nesneye yapmamızgerekir. Not Yeşil ile yazılan satırlar yorum satırlarıdır.Html formatında bir alt satıra inmiş olan yorum satırlarını copy&paste ile programınızaaktarırken o satırları tekrar tek satır haline getirmeyi unutmayın, aksi
 
halde programınız derlenemez.Server.csusing System; bunu her zaman eklememiz lazimusing System.IO ; StreamReader ve StreamWriter siniflari içinusing System.Net.Sockets; Socket, TcpListener ve NetworkStremsiniflari için public class Server {public static void Main(){Bilgi alisverisi için bilgi almak istedigimiz port numarasiniTcpListener sinifi ile gerçeklestiriyoruzTcpListener TcpDinleyicisi = new TcpListener(1234);TcpDinleyicisi.Start();Console.WriteLine(Sunucu baslatildi...) ;Soket baglantimizi yapiyoruz.Bunu TcpListener sinifininAcceptSocket metodu ile yaptigimiza dikkat edinSocket IstemciSoketi = TcpDinleyicisi.AcceptSocket();Baglantının olup olmadığını kontrol ediyoruzif (!IstemciSoketi.Connected){Console.WriteLine(Sunucu baslatilamiyor...) ;}else{Sonsuz döngü sayesinde AgAkimini sürekli okuyoruzwhile(true){Console.WriteLine(Istemci baglantisi saglandi...);IstemciSoketi verilerini NetworkStream sinifi türündennesneye aktariyoruz.NetworkStream AgAkimi = new NetworkStream(IstemciSoketi);Soketteki bilgilerle islem yapabilmek için StreamReader veStreamWriter siniflarini kullaniyoruzStreamWriter AkimYazici = new StreamWriter(AgAkimi);StreamReader AkimOkuyucu = new StreamReader(AgAkimi);

Activity (7)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
Furkan Yılmaz liked this
Gülin Ütebay added this note
program kodlarını almam mümkünmü teşekkür ederim
AndonMuhendislik liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->