Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lập trình Socket trong C#

Namespace System.Net.Sockets cung cấp triển khai managed của Windows Sockets. Hỗ trợ 2 chế độ: đồng bộ (blocking) và bất đồng bộ (async).

TCP Server cơ bản (TcpListener)

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

class TcpServer
{
    static void Main()
    {
        TcpListener listener = new TcpListener(IPAddress.Any, 1234);
        listener.Start();
        Console.WriteLine("Server đang lắng nghe cổng 1234...");

        while (true)
        {
            Socket socket = listener.AcceptSocket(); // Block cho đến khi client kết nối
            Console.WriteLine($"Client kết nối: {socket.RemoteEndPoint}");
            
            NetworkStream stream = new NetworkStream(socket);
            StreamReader reader = new StreamReader(stream);
            StreamWriter writer = new StreamWriter(stream) { AutoFlush = true };
            
            string message = reader.ReadLine();
            Console.WriteLine($"Nhận: {message}");
            
            writer.WriteLine($"Server echo: {message}");
            socket.Close();
        }
    }
}

TCP Client cơ bản

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

class TcpClientDemo
{
    static void Main()
    {
        using (TcpClient client = new TcpClient("127.0.0.1", 1234))
        using (NetworkStream stream = client.GetStream())
        using (StreamReader reader = new StreamReader(stream))
        using (StreamWriter writer = new StreamWriter(stream) { AutoFlush = true })
        {
            writer.WriteLine("Xin chào Server!");
            string response = reader.ReadLine();
            Console.WriteLine($"Server trả lời: {response}");
        }
    }
}

Tạo Socket thủ công

Socket socket = new Socket(
    AddressFamily.InterNetwork,  // IPv4
    SocketType.Stream,           // TCP
    ProtocolType.Tcp);           // Giao thức TCP

Tham số: AddressFamily (IPv4/IPv6), SocketType (Stream/Dgram/Raw), ProtocolType (Tcp/Udp).