Bài giảng Lập trình mạng - Chương 5: NET Socket - Trương Đình Huy
Chương 5. NET Socket
Trương Đình Huy
Chương 5. NET Soket
• 5.1. Giới thiệu
• 5.2. TCP Server
• 5.3. TCP Client
• 5.4. UDP Server/Client
2
Chương 5.1 Giới thiệu
• .NET Framework là bộ thư viện chạy trên đa kiến trúc của
Microsoft
• Hai namespace hỗ trợ lập trình mạng: System.Net và
System.Net.Sockets
• Một vài lớp chính
– IPAddress: Lưu trữ và quản lý địa chỉ IP.
– IPEndPoint: Lưu trữ thông tin về một địa chỉ socket, tương tự như
SOCKADDR_IN. Bao gồm IPAddress và cổng.
– DNS: Hỗ trợ các thao tác phân giải tên miền
– Socket: Xử lý các thao tác trên socket
3
Chương 5.1 Giới thiệu
• IPAddress: Đóng gói một địa chỉ IP
– Khởi tạo: IPAddress.Parse(“192.168.1.1”);
– Lấy dạng chuỗi: IPAddress.ToString();
– Các địa chỉ đặc biệt: IPAddress.Any, IPAddress.Broadcast,
IPAddress.Loopback
• IPEndPoint: Đóng gói một địa chỉ socket
– Khởi tạo: IPEndPoint(IPAddress, Int32)
– Lấy dạng chuỗi: IPEndPoint.ToString();
• DNS: thực hiện phân giải tên miền
– Lấy địa chỉ IP:
IPAddress[]
– Lấy thông tin về host:
IPHostEntry DNS.GetHostEntry(“www.google.com”);
DNS.GetHostAddress(“www.google.com”);
4
Chương 5.2 TCP Server
• Trình tự tạo TCP Server
– 1.Tạo một Socket
– 2.Liên kết với một IPEndPoint cục bộ
– 3.Lắng nghe kết nối
– 4.Chấp nhận kết nối
– 5.Gửi nhận dữ liệu theo giao thức đã thiết kế
– 6.Đóng kết nối sau khi đã hoàn thành và trở lại trạng thái lắng nghe
chờ kết nối mới.
5
Chương 5.2 TCP Server
• Thí dụ
// Thiết lập địa chỉ của server
IPEndPoint ie = new IPEndPoint(IPAddress.Any, 8888);
// Tạo socket server
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
int ret;
// Bind và Listen
server.Bind(ie);
server.Listen(10);
Console.WriteLine(“Doi ket noi tu client...");
// Chấp nhận kết nối mới
Socket client = server.Accept();
Console.WriteLine("Chap nhan ket noi tu:{0}",
client.RemoteEndPoint.ToString());
string s = “Hello Net Socket";
byte[] data = new byte[1024];
data = Encoding.ASCII.GetBytes(s);
client.Send(data, data.Length, SocketFlags.None);
6
Chương 5.2 TCP Server
• Thí dụ (tiếp)
while (true)
{
data = new byte[1024];
ret = client.Receive(data);
if (ret == 0) break;
Console.WriteLine("Du lieu tu client:{0}",
Encoding.ASCII.GetString(data,0,ret));
}
client.Shutdown(SocketShutdown.Both);
client.Close();
7
Chương 5.3 TCP Client
• Trình tự
– Xác định địa chỉ của Server
– Tạo Socket
– Kết nối đến Server
– Gửi nhận dữ liệu theo giao thức đã thiết kế
– Đóng Socket
8
Chương 5.3 TCP Client
• Thí dụ
// Thiết lập địa chỉ
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
// Tạo socket client
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
// Kết nối đến server
client.Connect(iep);
byte[] data = new byte[1024];
int recv = client.Receive(data); // Nhận câu chào từ server
string s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Server
gui:{0}", s);
string input;
while (true) {
input = Console.ReadLine();
//Chuyen input thanh mang byte gui len cho server
data = Encoding.ASCII.GetBytes(input);
client.Send(data, data.Length, SocketFlags.None);
9
Chương 5.3 TCP Client
• Thí dụ (tiếp)
if (input.ToUpper().Equals("QUIT")) break;
}
client.Disconnect(true);
client.Close();
}
10
Chương 5.4 UDP Server/Client
• Trình tự UDP Server
– Tạo một Socket
– Liên kết với một IPEndPoint cục bộ qua hàm Bind (UDP Server)
hoặc xác định địa chỉ Server để gửi dữ liệu (UDP Client)
– Gửi nhận dữ liệu theo giao thức đã thiết kế bằng hàm
ReceiveFrom/SendTo
– Đóng Socket
11
Bạn đang xem tài liệu "Bài giảng Lập trình mạng - Chương 5: NET Socket - Trương Đình Huy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_mang_chuong_5_net_socket_truong_dinh_huy.pdf