🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# / ileri programlama final 3-)windows services-soket ile ilgili örnek

 

1-) C# -  ileri programlama final 3-)windows services-soket ile ilgili örnek

1-)servisi yüklemek için

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>installutil

E:\WindowsService1.exe

2-)servisi silmek için

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>installutil

/u E:\WindowsService1.exe

3-)C# kodu SERVER.CS

Windows service ile yazılmış soket programlama en basit şekliyle

aşşağıda

dinle();

fonksyonunu ezberle yorum satırı olduğuna bakma

4-)Server.cs(yani soketi dinleyen kısım aşşağıda = bu kısımda

soketi dinliyor ve mesaj gelirse onu console yazdırıyor.Burada Windows service

olduğudan ovveride OnStart() alanına kodu yazmamız lazım)

using

System;

using

System.Collections.Generic;

using

System.ComponentModel;

using

System.Data;

using

System.Diagnostics;

using

System.Linq;

using

System.ServiceProcess;

using

System.Text;

using

System.Threading.Tasks;

using

System.Net;

using

System.Net.Sockets;

using

System.IO;

namespace

ileriservices

{

    public partial class Service1

: ServiceBase

    {

        public

Service1()

        {

            InitializeComponent();

            this.EventLog.Source

= this.ServiceName;

            this.EventLog.Log

= "Application";

        }

        protected override void

OnStart(string[] args)

        {

            this.EventLog.WriteEntry("sunucu

başlatıldı . . .");

            // dinle();

        }

        public void

dinle()

        {

            /*  try

              {

                  Socket s = new

Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);//

                  //InterNetwork = ipv4 ailesi

için

                  //SocketType.Dgram= UDP için

                  //SocketType.Stream= TCP için

                  //ProtocolType.IP = TCP ve

UDP de ip yi kullanır

                  s.Bind(new

IPEndPoint(IPAddress.Parse("127.0.0.1"), 600));

                  //127.0.0.1 = demek localhost

                  //6000 = demek port demek

0-65000 arasında deger verebılırsın 1024 den buyuk vermen senin  için iyidir

                  s.Listen(9);//dinleme kuyrugu

9 girdik

                  Socket client =

s.Accept();//gelecek olan clienti kabul ettik

                  NetworkStream ns = new

NetworkStream(client);//NetworkStream=client ile haberleşmek için

                  StreamReader sr = new

StreamReader(ns);//StreamReaderclient ile haberleşmek için

                  Console.WriteLine(sr.ReadToEnd());//gelen ne varsa okuyup ekrana yazdık

                  this.EventLog.WriteEntry("yazz "+sr.ReadToEnd());

                  sr.Close();

                  ns.Close();

                  s.Shutdown(SocketShutdown.Receive);//soketi

kapattık veri alış verişini

                  client.Shutdown(SocketShutdown.Receive);//client ile bağlantıyı kopardık

              }

              catch (SocketException de)

              {

                  Console.WriteLine("serverda hata

var \n" + de.Message);

              }

    */

        }

        protected override void

OnStop()

        {

        }

    }

}

2-)client.cs // server.cs portu dinliyordu . Client

ilede o ip-porta veri gönderecem ve Server.cs bunu dinlediği için o veriyi alıp

console yazıcak.istersen telnet ilede veri gönderebilirsin

telnet örn = telnet ile bağlanmak için

denetim masası-> windows özelliklerini aç veya

kapattan-> telnet istemcisini aç

sonra cmd ye

telnet 127.0.0.1 600

burada 127.0.0.1 = localhost

burada 600 = portu

 telnet 127.0.0.1

600 diyerek ip ve porta bağlandık “echo merhaba” ilede veri gönder.

Aşşağıdadada Client.cs var ezberle

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

namespace server1in_clienti

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        public void dinle()

        {

            Socket s = new Socket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.IP);

                 s.Connect(IPAddress.Parse("127.0.0.1"),

600);

                 byte[] buffer =

Encoding.ASCII.GetBytes(textBox1.Text);//girilen karakterleri asciye cevir

ve byte dizisine at çünkü TCP oldu.

                 s.Send(buffer);//bufferimizi yani

verimizi gonderelim

                 s.Close();//socketi kapatalım

        }

        private void button1_Click(object sender,

EventArgs e)

        {

            dinle();

        }

    }

}

 2021 Ocak 18 Pazartesi
 442