C# سوکت پروگرامینگ

برنامه نویسی سوکت با سی شارپ

توسط admin | گروه برنامه نویسی | 1403/08/02

نظرات 0

برنامه نویسی سوکت ها در سی شارپ

برنامه‌نویسی سوکت‌ها در سی‌شارپ به شما اجازه می‌دهد تا برنامه‌هایی ایجاد کنید که قادر به ارتباط از طریق شبکه باشند. سوکت‌ها در واقع نقاط انتهایی یک کانال ارتباطی دوطرفه هستند که برای ارسال و دریافت داده‌ها استفاده می‌شوند. بیایید با هم پنج مثال از استفاده سوکت‌ها در سی‌شارپ را ببینیم.

پاسخ گویی به تمرین ها و سوال های برنامه نویسی و پایگاه داده فوری 09131253620

مثال ۱: ایجاد یک سرور ساده

در این مثال، یک سرور TCP ساده ایجاد می‌کنیم که به پورت 13000 گوش می‌دهد و پیام‌هایی را از کلاینت دریافت و پاسخ می‌دهد.

کد csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
 
class Server {
static void Main() {
TcpListener server = new TcpListener(IPAddress.Any, 13000);
server.Start();
Console.WriteLine("Server started...");
 
while (true) {
TcpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + message);
 
byte[] response = Encoding.ASCII.GetBytes("Message received");
stream.Write(response, 0, response.Length);
client.Close();
}
}
}

توضیحات: این سرور به پورت 13000 گوش می‌دهد و وقتی پیامی دریافت می‌کند، آن را چاپ کرده و پاسخ "Message received" را به کلاینت ارسال می‌کند.

مثال ۲: ایجاد یک کلاینت ساده

در این مثال، یک کلاینت TCP ساده ایجاد می‌کنیم که به سرور متصل شده و پیامی را ارسال می‌کند.

کد csharp
using System;
using System.Net.Sockets;
using System.Text;
 
class Client {
static void Main() {
TcpClient client = new TcpClient("localhost", 13000);
NetworkStream stream = client.GetStream();
byte[] message = Encoding.ASCII.GetBytes("Hello, Server!");
stream.Write(message, 0, message.Length);
 
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + response);
 
client.Close();
}
}

توضیحات: این کلاینت به سرور متصل می‌شود، پیامی را ارسال می‌کند و پاسخ را دریافت و چاپ می‌کند.

مثال ۳: ارسال و دریافت داده‌های باینری

در این مثال، داده‌های باینری (به‌عنوان مثال، یک آرایه بایت) را ارسال و دریافت می‌کنیم.

کد سمت سرور:

کد csharp
using System;
using System.Net;
using System.Net.Sockets;
 
class BinaryServer {
static void Main() {
TcpListener server = new TcpListener(IPAddress.Any, 13000);
server.Start();
Console.WriteLine("Server started...");
 
while (true) {
TcpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
 
// پردازش داده‌های باینری
Console.WriteLine("Received " + bytesRead + " bytes");
 
byte[] response = BitConverter.GetBytes(bytesRead);
stream.Write(response, 0, response.Length);
client.Close();
}
}
}

کد سمت کلاینت:

کد csharp
using System;
using System.Net.Sockets;
 
class BinaryClient {
static void Main() {
TcpClient client = new TcpClient("localhost", 13000);
NetworkStream stream = client.GetStream();
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5 };
stream.Write(data, 0, data.Length);
 
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
int receivedBytes = BitConverter.ToInt32(buffer, 0);
Console.WriteLine("Received: " + receivedBytes + " bytes");
 
client.Close();
}
}

توضیحات: این مثال نشان می‌دهد چگونه می‌توان داده‌های باینری را ارسال و دریافت کرد.

مثال ۴: استفاده از UDP برای ارتباط سریع‌تر

در این مثال، از UDP برای ارسال و دریافت پیام‌ها استفاده می‌کنیم.

کد سمت سرور:

کد csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
 
class UdpServer {
static void Main() {
UdpClient server = new UdpClient(13000);
IPEndPoint clientEndpoint = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("UDP Server started...");
 
while (true) {
byte[] buffer = server.Receive(ref clientEndpoint);
string message = Encoding.ASCII.GetString(buffer);
Console.WriteLine("Received: " + message);
 
byte[] response = Encoding.ASCII.GetBytes("Message received");
server.Send(response, response.Length, clientEndpoint);
}
}
}

کد سمت کلاینت:

کد csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
 
class UdpClientProgram {
static void Main() {
UdpClient client = new UdpClient();
byte[] message = Encoding.ASCII.GetBytes("Hello, UDP Server!");
client.Send(message, message.Length, "localhost", 13000);
 
IPEndPoint serverEndpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] buffer = client.Receive(ref serverEndpoint);
string response = Encoding.ASCII.GetString(buffer);
Console.WriteLine("Received: " + response);
 
client.Close();
}
}

توضیحات: این مثال نشان می‌دهد چگونه می‌توان از پروتکل UDP برای ارسال و دریافت پیام‌ها استفاده کرد.

مثال ۵: استفاده از چندنخ (Threading) برای مدیریت چندین کلاینت

در این مثال، سرور چندین کلاینت را با استفاده از نخ‌ها (Threads) مدیریت می‌کند.

کد csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
 
class MultiThreadedServer {
static void Main() {
TcpListener server = new TcpListener(IPAddress.Any, 13000);
server.Start();
Console.WriteLine("Server started...");
 
while (true) {
TcpClient client = server.AcceptTcpClient();
Thread clientThread = new Thread(HandleClient);
clientThread.Start(client);
}
}
 
static void HandleClient(object obj) {
TcpClient client = (TcpClient)obj;
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + message);
 
byte[] response = Encoding.ASCII.GetBytes("Message received");
stream.Write(response, 0, response.Length);
client.Close();
}
}

توضیحات: این سرور با استفاده از نخ‌ها می‌تواند همزمان با چندین کلاینت ارتباط برقرار کند.

! با این مثال‌ها و توضیحات، شما اکنون می‌توانید برنامه‌های شبکه‌ای ساده‌ای با استفاده از سوکت‌ها در سی‌شارپ ایجاد کنید. 

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر