C# ile Client Server Veri İletimi

Server/ Client diğer adıyla Sunucu/İstemci yapısı günlük hayatta veri iletimi sırasında çokça kullandığımız bir yapıdır. İnternette bir siteye bağlanırken istemeden zaten bu yapıdan faydalanırız. Veri beklenen sitenin sunucusu (Server) default olarak belirtilmiş olan 80 numaralı portu gelen bağlantı istekleri için sürekli olarak dinler.

Gelen bağlantıları diğer bir port ile meydana getirdiği soket ile sarmalar ve yönlendirir. Bundan dolayı sunucu  yani server sürekli olarak 80 numaralı portu dinlemiş olur. Siteye bağlanan kişi yani client sitenin bilgi aldığı taraftaki sunucuya bağlantı isteğinde bulunur.

Eğer server client un isteğini kabul ederse , ona bir soket nesnesi açar ve farklı bir port’tan kendisiyle iletişim kurmasını sağlar. Soket yapıları  tamamiyle mantıksaldır Fiziksel hiçbir elemanla ilgisi yoktur.

Server tarafında sürekli olarak  bir dinleyici (listener diye bilinen) soketi bulunur. Bu dinleyici soketler yalnızca belli bir portu dinlerler. Tüm bağlantıları isteklerini bu port üzerinden kabul eder veya bunları reddeder. Bu soketler kabul ettiği bağlantılarla ilgilenmek için handler denen nesneler oluşturur ve aynı şekilde bu portu dinlemeye koyulur. Böylece sürekli  olarak dinlenen port değişmemiş olur.

Tipik olarak bir soketin oluşumu aşağıda  verilecektir. Burda stream şeklinde bir soket nesnesi oluşturulacaktır. Çünkü TCP/IP protokolü stream şeklinde ele alınır. Son olarak da protokolün tipi TCP olarak belirlenir.

Öte yandan listener soketinin hangi IP adresinden geleceğinin bilgisi, hangi portun dinlenmesi gerektiği belirtilmedir. Default olarak “127.0.0.1”  adresi localhost IP adresidir.

TCP protokolüyle Client tarafından server a bilgi yollama kodu aşağıdaki gibidir.

CheckForIllegalCrossThreadCalls = false;
try
{
TcpClient SendMesaj = new TcpClient(IP, PortNo);
NetworkStream stream = SendMesaj.GetStream();
string GelenKutusu = richTextBox2.Text;
byte[] Buffer = Encoding.ASCII.GetBytes(GelenKutusu);
byte[] GelenBuffer = new byte[SendMesaj.ReceiveBufferSize];
if (stream.CanWrite)
{
stream.Write(Buffer, 0, Buffer.Length);
}
else
{
SendMesaj.Close();
return;
}
if (stream.CanRead)
{
stream.Read(GelenBuffer, 0, (int)SendMesaj.ReceiveBufferSize);
string DurumMesaj = Encoding.ASCII.GetString(GelenBuffer);
label3.Text = DurumMesaj;
label3.Visible = true;
}
else
{
SendMesaj.Close();
return;
}
}
catch
{
MessageBox.Show("Mesaj Gönderme İşlemi Başarısız");
}

Aynı şekilde sürekli olarak belirli bir porttan veri olup olmadığını yoklayan server kodu da aşağıda verilmiştir.

public void PortuYokla()
{
CheckForIllegalCrossThreadCalls = false;
string Durum = "Mesajiniz basariyla Gonderilmistir.";
string IP_Adres;
string AlınanVeri;
TcpListener myListener = new TcpListener(PortNo);
byte[] AlınanVeriBufferı = new byte[4096];
byte[] GonderilecekBuffer = Encoding.ASCII.GetBytes(Durum);
while (true)
{
myListener.Start();
Socket soket = myListener.AcceptSocket();
soket.Receive(AlınanVeriBufferı, AlınanVeriBufferı.Length, 0);
AlınanVeri = Encoding.ASCII.GetString(AlınanVeriBufferı);
richTextBox2.Text = (AlınanVeri);
AlınanVeri = "";
IP_Adres = soket.RemoteEndPoint.ToString();
textBox2.Text = IP_Adres;
soket.Send(GonderilecekBuffer, GonderilecekBuffer.Length, 0);
myListener.Stop();
}
}

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi
İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

Mehmet Salih Deveci

I am Founder of IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress mehmetsalih.deveci@outlook.com.-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  mehmetsalih.deveci@outlook.com a mail atabilirsiniz.

22 thoughts on “C# ile Client Server Veri İletimi

    • June 15, 2011 at 5:50 pm
      Permalink

      Umarım yararlanmışsınızdır….

      Reply
      • January 16, 2016 at 5:23 pm
        Permalink

        Merhabalar. Bir proje hakkında size danışmam mümkünmü acaba.Yardımınıza ihtiyacım var dönebilirseniz teşekkür ederim.

        Reply
  • December 1, 2012 at 2:32 pm
    Permalink

    Çok güzel hocam. Fakat ben ypamaya uğraştım bazı yerlerde hata alıyorum acaba projeyi paylaşmanız mumkunmudur teşekkurler.

    Reply
    • December 15, 2012 at 10:57 am
      Permalink

      Hata aldığın yerleri söylersen sana daha çok yardımcı olurum. Kaynak kodları göndermem senin iyiliğine olmaz.

      Reply
      • January 13, 2013 at 1:55 pm
        Permalink

        Elinize sağlık hocam
        Socket soket = myListener.AcceptSocket(); hata veriyor hata kodu 10022

        Reply
      • June 6, 2014 at 4:59 pm
        Permalink

        hocam ben internet cafe masa takıp programı yapıyom am server ve client olusturamıyom yardımcı olabılırmısınız

        Reply
  • January 3, 2013 at 12:29 pm
    Permalink

    hocam ben client ve server taraflarının ikisinide yazdım tamam güzel çaışıyorda serverda gelen mesajı ekranda gösteremiyorum. ekran donup kalıo dinlemeye başladığında program

    Reply
    • January 3, 2013 at 12:55 pm
      Permalink

      ayrıca hocam ben bunu ağ üzerindeki bilgisayarlar arasında yapmaya kalktığımda ne gibi değişiklikler yapmam gerekiyor. yada internet üzerinden olsa mesela. elinizde örnek varsa paylaşırmısınız ?

      Reply
  • January 27, 2013 at 8:27 am
    Permalink

    Lise 3 Bilgisayar Bölümü Öğrencisiyim.Bana Dönem Ödevi Olarak Server/Client Projesi Verildi ve Bunu Form Üzerinde Yapmam Gerekiyor.Yardımcı Olabilecek ,Yol Gösterebilecek Biri var mı?

    Reply
  • March 18, 2013 at 7:34 am
    Permalink

    İyi günler,
    C# üzerinde bir server-client programı yapıyorum. Programı biraz geliştirdim. Projem; Client’ın uzak noktada bir pc olduğunu düşünün herhangi bir kullanıcısı yok bir makine içine monte edilmiş bilgisayara kurulu olacak Client’a bir cihazdan sinyal geliyor gelen sinyal server’ a gönderiliyor. Server üzerinde bu bilgiyi görüntüleyebiliyorum ancak birden fazla client olucak ve her clienta bir cihaz bağlı olucak ve her client aldığı bilgiyi servera online olarak göndericek. ben bunların senkronizasyonunu nasıl yapabilirim yani aynı anda bikaç clienttan birden gelen bilgiyi serverda nasıl görüntüleyebilirim. server kısmında hangi clienttan geldiğini de görüntülemem gerekiyor. Yardımcı olursanız çok sevinirim.

    Reply
  • April 2, 2013 at 8:50 pm
    Permalink

    port kısmında hata veriyor bi türlü çözemedim.PortNo kısmına 7777 felanmı yazcam yoksa yukarıdaki kod aynen çalışıyormu

    Reply
  • November 1, 2013 at 8:33 am
    Permalink

    hocam port u dinlerken timer kullanıyorum ama form gelen veriyi görüyor ama form üzerinde başka hiç bir işlem yapamıyorum kasıyor bunu nasıl çözebilirim

    Reply
  • February 28, 2014 at 11:36 pm
    Permalink

    Hocam local ağda alışan özel ve global mesajlaşabilen ve komut çalıştırabilen bir program geliştirdim fakat bu programı global çalıştırma istiyorum. nette araştırmalarım sonucunda da elle tutulur pek birşey çıkamdı yardımcı olursanız ço ksevinirim Protkolüm TCP

    Reply
  • March 18, 2014 at 11:40 pm
    Permalink

    Ben de benzer bir program yazmaya çalışıyorum yardımcı olabilir misiniz?

    Reply
  • July 15, 2014 at 11:47 am
    Permalink

    server dan cliente nasıl veri yollarım?

    Reply
  • February 23, 2015 at 11:10 pm
    Permalink

    Hocam projeyi paylasırsanız çok memnun olurum üni. 4.sınıfım ve hoca bu projenin benzerini istedi ve 4 sene boyunca hiç bişey öğretmediler açıkçası benim içimdede öğrenme isteği yok dersten geçmem gerek size minnettar kalırım teşekkürler

    Reply
  • November 29, 2016 at 6:56 pm
    Permalink

    programın linkini atabilirmisiniz …

    Reply
  • March 21, 2017 at 1:58 pm
    Permalink

    Kodların bir çoğu hatalı !! Düzeltiniz

    Reply
  • July 7, 2017 at 5:15 pm
    Permalink

    kaynak kod mevcut ise lütfen verebilirmisiniz

    Reply
  • May 18, 2018 at 7:58 pm
    Permalink

    Hocam ben listview’e client tarafında veri ekleme silme ve düzenleme işlemi yaptırmak istiyorum yardımcı olabilir misiniz ?

    Reply
  • May 22, 2019 at 7:43 am
    Permalink

    Greetings! Quick question that’s completely off topic. Do you know how to make your site mobile friendly? My site looks weird when viewing from my iphone 4. I’m trying to find a template or plugin that might be able to fix this issue. If you have any suggestions, please share. Thank you!

    Reply

Leave a Reply to BİLGİSAYAR MÜHENDİSİ Cancel reply

Do NOT follow this link or you will be banned from the site!