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

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

توی این برنامه از برنامه نویسی سوکت استفاده میکنیم.

خب ویژوال استودیو رو آتیش کنید.

حالا یه پروژه 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

حالا مثل قبل همون کامپوننت هارو بزارید و اینشکلی بچینید:

 

 

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



مشخصات

  • جهت مشاهده منبع اصلی این مطلب کلیک کنید
  • کلمات کلیدی منبع : حالا ,buffer ,message ,using ,text ,sclient ,messagebox show ,using system ,private void ,encoding unicode ,byte buffer ,unicode getstring buffer ,encoding unicode getstring ,invoke methodinvoker delegate ,richtextbox1 invoke methodinvoker
  • در صورتی که این صفحه دارای محتوای مجرمانه است یا درخواست حذف آن را دارید لطفا گزارش دهید.

تبلیغات

محل تبلیغات شما
محل تبلیغات شما محل تبلیغات شما

آخرین وبلاگ ها

برترین جستجو ها

آخرین جستجو ها

Jessica دنیای سینماوتئاتر/اخبار فرهنگی و هنری چاپ و تبلیغات میقات Michele خانه ي کاشي سراميک کالا ساخت بدنسازیس کافه اندیشه سئو چیست؟ خرید روغن بادام شیرین،روغن فندق،روغن خراطین آرترینا