Kart Geçiş Uygulaması



SERVER
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Collections;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace deneme
{
    public partial class Form1 : System.Windows.Forms.Form
    {
        private const int portno = 9990; //kullanıcı port numarası
        public Thread kanal; //kanal tanımlandı
        public int t1, t2, sonuc;
        public string bakiye,ucret,kalanbakiye;
       
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
            try //sadece prestige prosedürü için kanal olusturuluyor
            {
                kanal = new Thread(new ThreadStart(prestige));
                kanal.Start(); //kanal aktifleştiriliyor
                kanal.Priority = ThreadPriority.Normal; //öncelik sırası belirleniyor
                this.Text = "Kanal Çalıştı";
               
            }
            catch (Exception e)
            {
                this.Text = "Kanal Çalışmadı";
                kanal.Abort(); //Hata olursa kanalı iptal et
            }
        }
        [STAThread]
        static void Main()
        {
            Application.Run(new  Form1());
        }
        public int i = 1;
        public void prestige()
         {
           
            TcpListener tcplistener = new TcpListener(System.Net.IPAddress.Any,portno); //kullanılacak olan port belirleniyor
            try
            {
                while (true) //sonsuz döngü oluşturuluyor
                {
                    string[] parcalar;
                    tcplistener.Start();//port dinleniyor
                  
                  
                    Socket socket1 = tcplistener.AcceptSocket(); //socket1 isimli değişken porta bağlandı

                 
                    label3.Text = i.ToString();//kaçıncı bağlantı


                    Byte[] okunan = new Byte[1024];
                 
                    int boyut = socket1.Receive(okunan, okunan.Length, 0);//porta gelen veri okunuyor

                    string dataokunan = System.Text.Encoding.UTF8.GetString(okunan);//string değişkene dönüştürülüyor
                   
                  

                    listBox2.Items.Add(socket1.RemoteEndPoint.ToString());
                    //string numara;
                    //numara = IPAddress.Parse(((IPEndPoint)socket1.RemoteEndPoint).Address.ToString()).ToString();

                    //listBox3.Items.Add(numara);
                   
                    listBox1.Items.Add(dataokunan);//listboxa ekle
                
                    //mesajın ulaştığına dair bilgi client makinesine yollanıyor
                    String gidenveri = "Ulasmistir ";//cliente gönderilecek uyarı belitlendi
                    Byte[] gidenbyte = System.Text.Encoding.ASCII.GetBytes(gidenveri.ToCharArray());
                    //porttan gönderilecek veri byta a çevrildi
                    socket1.Send(gidenbyte, gidenbyte.Length, 0);//göndderiliyor

                    string numara;
                    numara = IPAddress.Parse(((IPEndPoint)socket1.RemoteEndPoint).Address.ToString()).ToString();
                

                    if (listBox3.Items.Contains(numara) == false)
                    {
                        listBox3.Items.Add(numara);
                        numara = "";
                    }

                    tcplistener.Stop();//Dinlemeyi iptal et
                    i++;//bağlantı sayısını 1 arttırır

                    //textBox1.Text = listBox1.Items[Convert.ToInt32( label3.Text)].ToString();
                    string yeni = listBox1.Items[0] .ToString();
              

                    //textBox1.Text = yeni; //texde veriyi almak lisboxdan


                    parcalar = yeni.Split(' ');
                   
                    string bs= label3.Text;
                    if (Convert.ToInt32(bs) ==1)
                    {
                        label7.Text = DateTime.Now.ToShortTimeString();
                        string ad = parcalar[0].ToString();
                       
                        label4.Text = ad;
                                   
                    }
                   else
                    {
                     
                        tcplistener.Start();
                        label8.Text = DateTime.Now.ToShortTimeString();
                        DateTime ilkdeger =Convert.ToDateTime( label7.Text); //1
                        DateTime sondeger = Convert.ToDateTime(label8.Text); //2

                     

                        string yeni1 = listBox1.Items[1].ToString();
                        parcalar = yeni1.Split(' ');
                        bakiye = parcalar[1].ToString();
                        label5.Text = bakiye;

                        System.TimeSpan zaman; //3
                        zaman = sondeger.Subtract(ilkdeger); //4
                        int toplamdakika = Convert.ToInt32(zaman.TotalMinutes); //5

                        label9.Text = toplamdakika.ToString();
                
                       ucret=(Convert.ToDouble(toplamdakika)*0.1).ToString();
                       kalanbakiye = (Convert.ToDouble(bakiye) - Convert.ToDouble(ucret)).ToString();

                       label10.Text = kalanbakiye.ToString();

                       Socket socket2 = tcplistener.AcceptSocket();

                       String gidenbakiye = kalanbakiye;//cliente gönderilecek uyarı belitlendi
                       Byte[] gidenbyte1 = System.Text.Encoding.ASCII.GetBytes(gidenbakiye.ToCharArray());
                       //porttan gönderilecek veri byta açevrildi
                       socket2.Send(gidenbyte1, gidenbyte1.Length, 0);//göndderiliyor


                    }                 
                }
            }
            catch (SocketException se)
            {
                MessageBox.Show(this, "Transfer işleminde hata oluştu.");
            }
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            prestige();
         
           
        }

   
    }
}
--------------------------------------------------------------------------------------

CLIENT


using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace denemeclient
{
    public partial class  Form1 : System.Windows.Forms.Form
    {
        public Form1()
        {
            InitializeComponent();
           
          
           
        }
        static void Main()
        {
            Application.Run(new Form1());

        }
        private int i = 1;//gönderilen mesaj saısını tutacak
        private int k = 1;
        private void button1_Click(object sender, System.EventArgs e)
        {
           
          
            if (k == 1)
            {
                textBox2.Hide();
                textBox1.Enabled = false;
                label2.Hide();
                button1.Text = "Çıkış";
                label3.Hide();
            }
         
            if (k == 2)
            {

                button1.Text = "Kalan Bakiye İçin Tıklayınız";
               
            }
            if (k == 3)
            {

                button1.Hide();

            }
            k++;
            TcpClient tcpclient = new TcpClient("169.254.175.119", 9990);
            try
            {
               
                NetworkStream networkstream = tcpclient.GetStream();
                if (networkstream.CanWrite)//yazma modundaysa
                {
                    Byte[] giden = Encoding.UTF8.GetBytes( textBox1.Text + " "+textBox2.Text);
                    //Byte[] giden1 = Encoding.UTF8.GetBytes( textBox2.Text + " ");//stringi byta çevirir
                    networkstream.Write(giden, 0, giden.Length);
                    //networkstream.Write(giden1, 0, giden1.Length);//yaz
                    
                    this.Text = "Gönderildi";
                   

                }
                else
                {

                    tcpclient.Close();//Bağlantıyı kapatır
                    return;
                }

                if (networkstream.CanRead)//okuma modundaysa
                {
                    byte[] oku = new byte[tcpclient.ReceiveBufferSize];//porttan gelen karakter sayısı kadar eleman olustur
                    networkstream.Read(oku, 0, (int)tcpclient.ReceiveBufferSize);//porttan oku
                    string gelen = Encoding.ASCII.GetString(oku);//bytı stringe çevir
                    tcpclient.Close(); //Kapat
                    listBox1.Items.Add(i.ToString() + " .ci " + gelen); //listeye ekle
                    i++;
                    return;
                }
                else
                {
                    tcpclient.Close();//Kapat
                    return;
                   

                }

            }
                
            catch (Exception w)
            {
                MessageBox.Show(this, "Bağlantıda hata oluştu");
                tcpclient.Close();//Kapat
            }
          
          
        }
      
    }
}