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).