سلام دوستان. امیدوارم حالتون عالی باشه.
بعد مدت ها اومدم تا یک آموزش مشتی براتون بزارم.


توی این برنامه از برنامه نویسی سوکت استفاده میکنیم.
خب ویژوال استودیو رو آتیش کنید.
حالا یه پروژه windows forms درست کنید و اسمشو بزارید: Server
حالا اینا رو بزارید توش:

1 عدد rich text box
1 عدد text box
3 عدد button
2 عدد label


*نکته: اسم کامپوننت ها رو عوض نکنید.

صفحتونو این شکلی بچینید:

*برای بزرگتر شدن روی تصویر کلیک کنید.

حالا دوبار روی فورم کلیک کنید و using های زیر رو اضافه کنید:

using System.Net;
using System.Net.Sockets;
using System.Threading;

حالا روی دکمه start دوبار کلیک کنید و کدای زیرو اضافه کنید:

 

            try
            {
                Thread tr = new Thread(new ThreadStart(Start));
                tr.Start();
                label2.ForeColor = Color.DarkGreen;
                label2.Text = "On";
                MessageBox.Show("server is running!", "server running!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

 

و بعد متد های زیر رو خارج از متد های دیگه بنویسید:

        private void Start()
        {
            Socket SServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            SServer.Bind(new IPEndPoint(IPAddress.Any, 15000));
            SServer.Listen(1);
            SClient = SServer.Accept();
            Thread tr = new Thread(new ThreadStart(RecMessage));
            tr.Start();
        }

        private void RecMessage()
        {
            while (true)
            {
                try
                {
                    byte[] buffer = new byte[2048];
                    int rec = SClient.Receive(buffer);
                    if (rec > 0)
                    {
                        richTextBox1.Invoke((MethodInvoker)delegate
                        {
                            richTextBox1.Text += "\n>> " + Encoding.Unicode.GetString(buffer,0,rec);
                        });
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void SendMsg(string Message)
        {
            byte[] buffer = Encoding.Unicode.GetBytes(Message);
            SClient.Send(buffer);
        }

 

حالا روی دکمه Send دوبار کلیک کنید و کد زیر رو بنویسید:

SendMsg(textBox1.Text);

 

و توی دکمه Exit هم کد زیر رو بزنید:

Application.Exit();

 

حالا برنامه رو کمپایل کنید.

حالا باید کلاینت رو بسازیم.

یه پروژه دیگه باز کنید و اسمشو بزارید Client

کامپوننت های قبل رو بچینید.

*توجه: دکمه start رو به connect تغییر بدید و لیبل server stats رو به connection stats تغییر بدید.

using های زیر رو به پروژه تون اضافه کنید:

using System.Net;
using System.Net.Sockets;
using System.Threading;


حالا دوبار روی دکمه Connect کلیک کنید و کدای زیرو توش بنویسید:


            try
            {
                SClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                SClient.Connect(new IPEndPoint(IPAddress.Parse("Your Ip"), 15000));
                Thread tr = new Thread(new ThreadStart(GetMsg));
                tr.Start();
                label2.ForeColor = Color.DarkGreen;
                label2.Text = "On";
                MessageBox.Show("Connected to server!", "connected!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


توی خط چهارم بجای your ip لوکال آیپی تونو بنویسید. (آموزش بدست آوردن لوکال آیپی)

حالا توی دکمه Send کد زیر رو بزارید:

  

SendMessage(textBox1.Text);

 

و توی دکمه Exit هم کد زیر رو بزارید:

  
Application.Exit();

 

حالا خارج از متد های دیگه این متد ها رو بنویسید:


        private void GetMsg()
        {
            while (true)
            {
                try
                {
                    byte[] buffer = new byte[2048];
                    int rec = SClient.Receive(buffer);
                    if (rec > 0)
                    {
                        richTextBox1.Invoke((MethodInvoker)delegate
                        {
                            richTextBox1.Text += "\n>> " + Encoding.Unicode.GetString(buffer, 0, rec);
                        });
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        private void SendMessage(string Message)
        {
            byte[] buffer = Encoding.Unicode.GetBytes(Message);
            SClient.Send(buffer);
        }


 

حالا این هم کمپایل کنید.

تبریک!

شما تونستید یه چت درون شبکه برای خودتون بسازید.

 


we work in dark to serve the light

we are darkarmy team