C# Multi Thread Socket Programlama ile basit bir Server Client Uygulaması 3

csharp

Multi Thread Socket Programlama ile basit bir uygulama nasıl yapabiliriz yazımızın üçüncü ve son bölümü ile karşınızdayız. Bu yazımızda client tarafını gerçekleştireceğiz.
Uygulamaya ait indirme linkleri yazının sonundadır.

Birinci yazı için tıklayınız.

İkinci yazı için tıklayınız.

Bu sefer uygulamamıza yeni bir proje ekliyeceğiz. Bunun için Solution Explorer’dan mevcut projeye sağ tıklayıp Add -> New Project… diyoruz.

Yeni bir windows uygulaması da açabiliriz tabi tercih sizin.

th03

Bu uygulamamız tek ekrandan oluşacağı için herhangi bir Form nesnesi eklememize gerek yok. Aşağıdaki Form dizaynını yapıyoruz.th04

Daha sonra ise MainClient adında bir class ekleyip içersine bu kodları yazıyoruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;

namespace MTSocketClient
{
    class MainClient
    {
        private string _ConnectionName = "";
        public string ConnectionName { get { return _ConnectionName; } set { _ConnectionName = value; } }

        TcpClient clientSocket = new TcpClient();
        NetworkStream serverStream;
        public void Connect(string server, int port)
        {
            if (!clientSocket.Connected)
            {
                try
                {
                    clientSocket.Connect(server, port);
                    //Public.Debugger.WriteConsole(
                    //    "Servera Bağlandı: " +
                    //    Public.Settings.ServerIP.ToString() + ":" +
                    //    Public.Settings.ServerPort, "Client", "MAC");
                }
                catch (Exception)
                {

                }
            }
        }
        public void DisConnect()
        {
            if (clientSocket.Connected)
            {
                clientSocket.Close();
                //Public.Debugger.WriteConsole("Server Bağlantısı Kapandı", "Client", "MAC");
            }
        }

        public bool CheckState()
        {
            return clientSocket.Connected;
        }

        public string Send(string Data)
        {
            string returndata = "";
            if (!clientSocket.Connected)
            {
                //Connect();
                //return Send(Data);
                return "Not Connected";
            }
            else
            {
                try
                {
                    NetworkStream serverStream = clientSocket.GetStream();
                    byte[] outStream = System.Text.Encoding.UTF8.GetBytes(Data);
                    serverStream.Write(outStream, 0, outStream.Length);
                    serverStream.Flush();

                    byte[] inStream = new byte[1000 * 1024 + 1];
                    serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
                    returndata = System.Text.Encoding.UTF8.GetString(inStream);
                    returndata = returndata.Substring(0, returndata.IndexOf("\0"));

                    //Public.Debugger.WriteConsole(returndata, "Client", "MAC");

                    //Local_Chat.Client.Data.Data.SetData(returndata);
                }
                catch (Exception)
                {
                    return "ERROR " + returndata;
                }

                return "SENDED " + returndata;
            }
        }
    }
}

Form un kodlarını ise şu şekilde düzenliyoruz.

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;

namespace MTSocketClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            mc.Connect("127.0.0.1", 8000);
            if (mc.CheckState())
            {
                MessageBox.Show("Connected");
            }
        }
        MainClient mc = new MainClient();

        private void btn_Send_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(mc.Send(textBox1.Text));
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Focus();
        }

    }
}

Burada dikkat etmemiz gereken nokta ise mc.Connect() satırı.
Burada parametre ile belirttiğimiz ip adresi ve porta client uygulamanın bağlanmasını sağlıyoruz.
Bundan sonraki geliştirmeler artık size kalmış.

th05

Uygulamaya ait kodlar ise aşağıda bulunmaktadır.
İndirmek için Lütfen Tıklayın
Server Client ve DebugConsole.DLL