وبلاگ کدنویسان

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

وبلاگ کدنویسان

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

برای ایجاد برنامه های سرویس دهنده/سرویس گیرنده بصورت اتصال گرا در سی شارپ ، دو پروژه از نوع کنسول ایجاد می کنیم. یکی از روش های ارتباط و ارسال پیام بین برنامه های سرویس گیرنده وسرویس دهنده استفاده از سوکت می باشد.در نمونه برنامه های زیر برای ساخت برنامه سرویس دهنده از 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();
}
}
}
  • محمد محمدی

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی