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 [email protected] 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
Gerçekten çok faydalı bir yazı Teşekkürler
Umarım yararlanmışsınızdır….
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.
Çok güzel hocam. Fakat ben ypamaya uğraştım bazı yerlerde hata alıyorum acaba projeyi paylaşmanız mumkunmudur teşekkurler.
Hata aldığın yerleri söylersen sana daha çok yardımcı olurum. Kaynak kodları göndermem senin iyiliğine olmaz.
Elinize sağlık hocam
Socket soket = myListener.AcceptSocket(); hata veriyor hata kodu 10022
hocam ben internet cafe masa takıp programı yapıyom am server ve client olusturamıyom yardımcı olabılırmısınız
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
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 ?
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ı?
İ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.
port kısmında hata veriyor bi türlü çözemedim.PortNo kısmına 7777 felanmı yazcam yoksa yukarıdaki kod aynen çalışıyormu
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
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
Ben de benzer bir program yazmaya çalışıyorum yardımcı olabilir misiniz?
server dan cliente nasıl veri yollarım?
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
programın linkini atabilirmisiniz …
Kodların bir çoğu hatalı !! Düzeltiniz
kaynak kod mevcut ise lütfen verebilirmisiniz
Hocam ben listview’e client tarafında veri ekleme silme ve düzenleme işlemi yaptırmak istiyorum yardımcı olabilir misiniz ?
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!