C# Network Programlama - Server -

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
yusufkurt
24-02-2005, 17:07   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
10 mesaj
Kayıt Tarihi:Kayıt: Şub 2005

C# da Sınıf kütüphaneleri kullanılarak Çok geniş çaplı Network programları yapılabilir.Biz bu örneğimizde basit Socket yapıları ile ufak bir konsolda çalışan server programı yapacağız :) Program sizin belirttiğiniz portu dinleyerek bağlantıları bekleyecek ve gelen textleri tekrar size gönderen basit bir server programıı :) Amaç olayın mantığını anlamak gerisi size kalmış ! Örneğin Trojan diye bildiğimiz programlar bu mantıkla çalışır.Yani kendisine gelen emirleri yorumlar ve Konak makinada gerekenleri yapan programlardır.Örnekleri çoğaltabiliriz v.s v.s  :)

using System; // Ana Başlık . Her zaman Ekleyin
using System.IO ; //StreamReader ve StreamWriter sınıfları için gerek
using System.Net.Sockets; // Socket, TcpListener ve NetworkStream siniflari için

public class Server
{

    public static void Main()
    {

     //Bilgi alış verişi için bir Port belirtiyoruz
     TcpListener TcpDinleyicisi = new TcpListener(6666);
     TcpDinleyicisi.Start();

     Console.WriteLine("Sunucu Başlatıldı :)") ;

     //Socket Bağlantımızı Yapıyoruz :)
     Socket IstemciSoketi = TcpDinleyicisi.AcceptSocket();


     // Bağlantının Sağlanıp sağlanmadığını Kontrol edin mutlaka     if (!IstemciSoketi.Connected)
     {
         Console.WriteLine("Sunucu Başlatılamıyor");
     }
     else
     {
         //Sonsuz Döngü ile Sürekli Kontrol ediyoruz Bilgiyi         while(true)
         {
         Console.WriteLine("İstemci Bağlandı");

         //IstemciSoketi verilerini NetworkStream sınıfı türünden nesneye aktariyoruz.
         NetworkStream AgAkimi = new NetworkStream(IstemciSoketi);

         //Soketteki bilgilerle islem yapabilmek için StreamReader ve StreamWriter siniflarini kullaniyoruz
         StreamWriter AkimYazici = new StreamWriter(AgAkimi);
         StreamReader AkimOkuyucu = new StreamReader(AgAkimi);


         //StreamReader ile String veri tipine aktarma islemi önceden bir hata olursa bunu handle etmek gerek
         try
         {
            string IstemciString = AkimOkuyucu.ReadLine();

            Console.WriteLine("Gelen Bilgi:" + IstemciString);

            //Istemciden gelen bilginin uzunlugu hesaplaniyor
            int uzunluk = IstemciString.Length;

            //AgAkimina, AkimYazını ile IstemciString inin uzunluğunu yazıyoruz
            AkimYazici.WriteLine(uzunluk.ToString());

            AkimYazici.Flush() ;
          }
         
          catch
          {
             Console.WriteLine("Sunucu Kapatılıyor");
             return ;
          }
        }
      }

    IstemciSoketi.Close();
    Console.WriteLine("Sunucu Kapatılıyor");
   }
}


Burada Bazı bilgiler vermek istiyorum . Yukarıdaki örnekte Bağlantı için bir port belirledikten sonra bir socket tanımlıyoruz.İnternet iletişiminde server Client ile bir socket üzerinden haberleşir.Socket dediğimiz kavram aslında bir numaradan başka bir şey değildir.Bir nevi sizin için bir kanaldır.Ve kanal üzerinden haberleşme sağlanıyor.

Bir sonraki bölümde Client Programını İnceleyeceğiz :) İsterseniz Siz telnet programı ile programınızı test edebilirsiniz . Örneğin ;)

telnet localhost 6666

yazarak kendi üzerinize 6666 ile bağlanabilirsiniz.Programı geliştirmek sizin elinizde .Açılışta port numarasını Console.ReadLine(); ile sorarak port numarasını dinamik olarak belirtebilirsinizzz. Neyse Kolay gelsin ;)

Son Düzenleme: yusufkurt ~ 24 Şubat 2005 17:10
Eyüp Korkusuz
24-02-2005, 17:39   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
2,077 mesaj
Kayıt Tarihi:Kayıt: Eyl 2004

Ayrıca bunun içinde teşekkürler sen anlıyorsun C programlamadan herhalde...