پروژه حاضر شامل دو برنامه سرویس دهنده و سرویس گیرنده است به با روش UDP با هم ارتباط برقرار کرده و پیام رد و بدل می کنند.نوع ارتباط سرور و کلاینت هر یک بر روی یک خط میتواند اطلاعات را دریافت نماید و برای ایجاد ارتباطی برای ارسال و دریافت اطلاعات باید دو ارتباط یک طرفه ایجاد نمود.
در این نوع ارتباط سرور و کلاینت هر یک بر روی یک خط میتواند اطلاعات را دریافت نماید. در اینجا ارتباط دو طرفه وجود ندارد و برای ایجاد ارتباطی برای ارسال و دریافت اطلاعات باید دو ارتباط یک طرفه ایجاد نمود. یعنی هر برنامه در هر سمت با پورت مخصوص خود داده را ارسال نماید.
برای نوشتن چنین برنامه ای نیاز هست در ابتدا با کلاس UDPClient آشنا شویم:
برای نوشتن چنین برنامه ای نیاز هست در ابتدا با کلاس UDPClient آشنا شویم:
کلاس UDPClient:
این کلاس سرویس های شبکه را بر اساس پروتکل UDP در اختیار قرار می دهد.و ارسال و دریافت بسته های Udp را ممکن میسازد. انواع سازنده های آن میتواند به اشکال زیر باشد:
UDPClient نام دلخواه= new UDPClient( );
UDPClient نام دلخواه= new UDPClient(شماره پورت );
UDPClient نام دلخواه= new UDPClient(پورت و آدرس);
همچنین بصورت زیر نیز میتواند استفاده شود:
(ابتدا توسط IPEndPoint مقداردهی شود)
مثال:
مثال:
IPEndPoint test=new IPEndPoint(IpAddress.Parse(“192.168.1.1”), 2000);
UDPClient u= new UDPClient( test);
UDPClient u= new UDPClient( test);
انواع متدهای پرکاربرد کلاس UdpClinet:
الف)متد Connect:
این متد اختیاریست و با استفاده از آن میتوان مقصد پیش فرض را برای UdpClinet مشخص کرد.
این متد اختیاریست و با استفاده از آن میتوان مقصد پیش فرض را برای UdpClinet مشخص کرد.
ب) متد Receive:
برای دریافت داده است و داده ای را که از طرف مقابل می آید دریافت کرده و در آرایه ای از بایتها ذخیره میکند.
برای دریافت داده است و داده ای را که از طرف مقابل می آید دریافت کرده و در آرایه ای از بایتها ذخیره میکند.
یک ورودی از نوع IPEndpoint میپذیرد.
مثلا:
IPEndPoint test=new IPEndPoint(IpAddress.Parse(“192.168.1.1”), 2000);
UDPClient u= new UDPClient( test);
Byte[] m=u.Receive(ref test);
ج) متد Send:
برای ارسال داده است.
برای ارسال داده است.
در یک نوع چهار ورودی میپذیرد. ورودی اول داده ارسالی از نوع Byte است. ورودی دوم طول داده ارسالی از نوع int است.ورودی سوم IP یا نام مقصد است و ورودی چهارم شماره پورت است.
د) متد Close :پایان ارتباط
برای نوشتن یک برنامه کلاینت سرور از نوع UDP با socket در مثال زیر، یک ارتباط ساده بین سرور و کلاینت ایجاد شده است. دو برنامه نوشته شده است. نیاز یک برنامه در سمت سرور باید نوشته شود و برنامه دیگر در کلاینت نوشته و اجرا شود.
برنامه سرویس دهنده:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace Server2 { class Program { static void Main(string[] args) { Console.WriteLine("In Server"); UdpClient client = new UdpClient(2500); IPEndPoint iep = new IPEndPoint(IPAddress.Any,0); byte[] b = new byte[255]; b = client.Receive(ref iep); Console.WriteLine(ASCIIEncoding.ASCII.GetString(b)); byte[] b2=ASCIIEncoding.ASCII.GetBytes("Msg From Server"); client.Send(b2, b2.Length , iep); Console.ReadKey(); } } }
برنامه سرویس گیرنده:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace Client2 { class Program { static void Main(string[] args) { Console.WriteLine("In Client"); UdpClient client = new UdpClient(); IPAddress ip = IPAddress.Parse("192.168.100.233"); IPEndPoint iep = new IPEndPoint(ip,2500); client.Connect(iep); byte[] b = new byte[255]; b=ASCIIEncoding.ASCII.GetBytes("Msg From Client"); client.Send(b, b.Length); byte[] b2 = client.Receive(ref iep); Console.WriteLine(ASCIIEncoding.ASCII.GetString(b)); Console.ReadKey(); } } }