وباکا

آموزش تخصصی برنامه نویسی وب

برنامه نویسی Server/Client به روش اتصال گرا (TCP) در سی شارپ

برای ایجاد برنامه های سرویس دهنده/سرویس گیرنده بصورت اتصال گرا در سی شارپ ، دو پروژه از نوع کنسول ایجاد می کنیم. یکی از روش های ارتباط و ارسال پیام بین برنامه های سرویس گیرنده وسرویس دهنده استفاده از سوکت می باشد. در این بخش نمونه برنامه هایی زیر برای ساخت برنامه سرویس دهنده از کلاس TcpListener و متد AcceptSocket آن استفاده شده است. 

در نمونه برنامه های زیر برای ساخت برنامه سرویس دهنده از کلاس TcpListener و متدد AcceptSocket آن استفاده شده است. این متد یک شی سوکت بر می گرداند که با فراخوانی متدهای Send و Receive آن می توان پیام ها را ارسال و دریافت کرد.
در برنامه سرویس گیرنده هم یک سوکت ایجاد شده و با اتصال به سرویس دهنده با آن پیام رد و بدل می کند . کلاس Socket در سی شارپ متدهای زیر را داراست:
  • متد Connect : اتصال به سرویس دهنده
  • متد Send : ارسال پیام
  • متد Receive: دریافت پیام
  • متد Close : بستن ارتباط
لازم به ذکر است هر نوع پیامی برای ارسال در شبکه باید در مبدا از حالت رشته ای به آرایه ای از بایت ها تبدیل شده و در مقصد دوباره به رشته تبدیل گردد.
 
کد برنامه سرویس دهنده
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

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

namespace Server1
{
    class Program
    {
        static void Main(string[] args)
        {



            IPAddress ip = IPAddress.Parse("192.168.11.30");
            int port = 2500;
            TcpListener s = new TcpListener(ip, port);
            s.Start();
            Console.WriteLine("Server Started.. ");
            Socket c = s.AcceptSocket();
            Console.WriteLine("1 Client connected.. ");
            byte[] b1 = new byte[80];
            b1 = ASCIIEncoding.ASCII.GetBytes("Hello ,please send message:");
            c.Send(b1);
            byte[] b2 = new byte[80];
            c.Receive(b2);
            Console.WriteLine( ASCIIEncoding.ASCII.GetString(b2) );
            c.Close();
            Console.ReadKey();

        }
    }
}

کد برنامه سرویس گیرنده :
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

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

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            // ایجاد ارتباط 
            // TCP
            // با استفاده از سوکت
            string msg;
            Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream
                , ProtocolType.Tcp);

            c.Connect("192.168.11.30", 2500);
            byte[] b1 = new byte[80];
            c.Receive(b1);
            Console.Write( ASCIIEncoding.ASCII.GetString(b1) );

            msg = Console.ReadLine();
            byte[] b2 = new byte[80];
            b2 = ASCIIEncoding.ASCII.GetBytes(msg);
            c.Send(b2);

            c.Close();
        }
    }
}

در صورت اجرای برنامه ها، ابتدا یک پیغام از سرویس گیرنده به سرویس دهنده فرستاده شده و سپس سرویس دهنده با فرستان یک پیام تائید به سرویس گیرنده اطلاع می دهد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب