Site icon IT Tutorial

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

Exit mobile version