C# Cơ bản .NET Core §1 Cài đặt, chương trình C# đầu tiên §2 Biến, kiểu dữ liệu và nhập/xuất §3 Toán tử số học và gán §4 So sánh, logic và lệnh if, switch §5 Vòng lặp for, while §6 Phương thức - Method §7 Chuyển số thành chữ §8 Phương thức - Delegate §9 Lớp - Class §10 Namespace §11 Partial, Nested §12 Kiểu giá trị, tham chiếu §13 Kiểu vô danh và dynamic §14 Biểu thức lambda §15 Event §16 Hàm hủy - Quá tải toán tử - thành viên tĩnh - indexer §17 null và nullable §18 Mảng §19 Chuỗi ký tự §20 Tính kế thừa §21 Phương thức khởi tạo §22 Tính đa hình - abstract - interface §23 Struct và Enum §24 Ngoại lệ Exeption §25 IDisposable - using §26 File cơ bản §27 FileStream §28 Generic §29 Collection - List §30 SortedList §31 Queue / Stack §32 Linkedlist §33 Dictionary - HashSet §34 Phương thức mở rộng §35 ObservableCollection §36 LINQ §37 (Multithreading) async - bất đồng bộ §38 Type §39 Attribute Annotation §40 DI Dependency Injection §41 (Multithreading) Parallel §42 Thư viện lớp §43 (Networking) Uri, Dns, Ping §44 (Networking) HttpClient §45 (Networking) HttpMessageHandler §46 (Networking) HttpListener §47 (Networking) Tcp TcpListenerr/TcpClient §48 (ADO.NET) SqlConnection §49 (ADO.NET) SqlCommand §50 (ADO.NET) DataAdapter §51 (EF Core) Tổng quan §52 (EF Core) Tạo Model §53 (EF Core) Fluent API §54 (EF Core) Query §55 (EF Core) Scaffold §56 (EF Core) Migration §57 (ASP.NET CORE) Hello World! §58 (ASP.NET CORE) Middleware §59 (ASP.NET CORE) Map - Request - Response §60 (ASP.NET CORE) IServiceCollection - MapWhen §61 (ASP.NET CORE) Session - ISession §62 (ASP.NET CORE) Configuration §63 (ASP.NET CORE) Gửi Mail §64 (ASP.NET CORE) SASS/SCSS §65 (ASP.NET CORE) LibMan §66 (ASP.NET RAZOR) Khởi tạo và Route §67 (ASP.NET RAZOR) Cú pháp Razor §68 (ASP.NET RAZOR) Layout trong ASP.NET Core §69 (ASP.NET RAZOR) Partial §70 (ASP.NET RAZOR) ViewComponent §71 (ASP.NET RAZOR) TagHelper §72 (ASP.NET RAZOR) HtmlHelper §73 (ASP.NET RAZOR) PageModel §74 (ASP.NET RAZOR) Model Binding §75 (ASP.NET RAZOR) HTML Form, Validation §76 (ASP.NET RAZOR) Upload File §77 (ASP.NET RAZOR) Entity Framework §78 (ASP.NET RAZOR) Paging §79 (ASP.NET RAZOR) Identity (1) - Register, Login, Logout §80 (ASP.NET RAZOR) Identity (2) Lockout, Reset Password §81 (ASP.NET RAZOR) Identity (3) Google Login §82 (ASP.NET RAZOR) Identity (4) Facebook Login §83 (ASP.NET RAZOR) Identity (5) profile, password, email ... §84 (ASP.NET RAZOR) Identity (6) Role §85 (ASP.NET RAZOR) Identity (7) Role-based Authorization §86 (ASP.NET RAZOR) Identity (8) RoleClaim §87 (ASP.NET RAZOR) Identity (9) Authorization Handler §88 (ASP.NET RAZOR) IAuthorizationService §89 (ASP.NET MVC) Controller - View §90 (ASP.NET MVC) Route §91 (ASP.NET MVC) EF, Identity §92 (ASP.NET MVC) Binding, Validation §93 (ASP.NET MVC) Xây dựng Website(1) §94 (ASP.NET MVC) Xây dựng Website(2) §95 (ASP.NET MVC) Xây dựng Website(3) §96 (ASP.NET MVC) Xây dựng Website(4) §97 (ASP.NET MVC) Giỏ hàng - Cart (5) §98 (ASP.NET MVC) elFinder (5) §99 (ASP.NET MVC) SB Admin (6) §100 (ASP.NET MVC) Kestrel, publish
Thư viện lớp (Bài trước)

Một số namespace, class về Networking

Namespace:
System.Net
System.Net.Mail
System.Net.NetworkInformation
System.Net.Http

  • Làm việc với máy chủ Dns, Uri, địa chỉ mạng có các lớp Dns, Uri, Cookie, IPAddress ...
  • Làm việc với FTP Server có các lớp FtpStatusCode, FtpWebRequest, FtpWebResponse ...
  • Làm việc với giao thức HTTP (máy chủ web) có các lớp như: HttpStatusCode, HttpWebRequest, HttpWebResponse, HttpClient, HttpMethod, HttpRequestMessage, HttpResponseMessage
  • Làm việc với máy chủ SMTP gửi email: SmtpClient, MailMessage, MailAddress, MailAddress
  • Làm việc với giao thức mạng: IPStatus, NetworkChange, Ping, TcpStatistics ...

Lớp Uri

System.Uri là lớp biểu diễn về địa chỉ URI (URL) (xem thêm Tìm hiểu URI, URL), nó giúp cho nhanh chóng lấy thông tin các thành phần của URL như host, path, query ... Đối tượng Uri còn sử dụng trong tham số để thực hiện các truy vấn HTTP Request ở các phần sau.

Ví dụ, hiện thị các thuộc tính - giá trị thuộc tính của Uri

string url = "https://xuanthulab.net/lap-trinh/csharp/?page=3#acff";
var uri = new Uri(url);
var uritype = typeof(Uri);
uritype.GetProperties().ToList().ForEach(property => {
    Console.WriteLine($"{property.Name, 15} {property.GetValue(uri)}");
});
Console.WriteLine($"Segments: {string.Join(",", uri.Segments)}");
// KET QUA
    
//    AbsolutePath /lap-trinh/csharp/
//     AbsoluteUri https://xuanthulab.net/lap-trinh/csharp/?page=3#acff
//       LocalPath /lap-trinh/csharp/
//       Authority xuanthulab.net
//    HostNameType Dns
//   IsDefaultPort True
//          IsFile False
//      IsLoopback False
//    PathAndQuery /lap-trinh/csharp/?page=3
//        Segments System.String[]
//           IsUnc False
//            Host xuanthulab.net
//            Port 443
//           Query ?page=3
//        Fragment #acff
//          Scheme https
//  OriginalString https://xuanthulab.net/lap-trinh/csharp/?page=3#acff
//     DnsSafeHost xuanthulab.net
//         IdnHost xuanthulab.net
//   IsAbsoluteUri True
//     UserEscaped False
//        UserInfo
//  Segments: /,lap-trinh/,csharp/

Lớp tĩnh Dns và lớp IPHostEntry

Lớp Dns (System.Net.Dns) cung cấp các phương thức tính để lấy thông tin về host (địa chỉ website, server cung cấp các dịch vụ mạng) từ hệ thống phân giải tên miền (Dns). Các thông tin truy vấn được nó trả về một đối tượng giao diện IPHostEntry

DNS là hệ thống phân giải tên miền, giúp cho các trình client (như các trình duyệt) truy vấn để chuyển đổi một tên miền (như xuanthulab.net) sang địa chỉ IP vật lý tương ứng của tên miên đó. Sau đó địa chỉ IP này được dùng để kết nối client/server. Dữ liệu DNS được lưu trữ và phục vụ truy vấn từ các Server DNS được vận hành bởi các nhà cung cấp dịch vụ và các tổ chức

Một số phương thức của lớp Dns
GetHostName() Lấy hostname của máy local
GetHostEntry(String)
GetHostEntry(IPAddress)
Phân giải host hoặc IP thành đối tượng IPHostEntry. Đối tượng kiểu IPHostEntry nó chứa thông tin địa chỉ về host.
IPHostEntry có các thuộc tính để lấy thông tin về host như
HostName Chuỗi chứa hostname của Server
AddressList Mảng các phần tử kiểu IPAddress chứa các địa chỉ IP

Ví dụ:

string url = "https://www.bootstrapcdn.com/";
var uri = new Uri(url);
var hostEntry = Dns.GetHostEntry(uri.Host);
Console.WriteLine($"Host {uri.Host} có các IP");
hostEntry.AddressList.ToList().ForEach(ip => Console.WriteLine(ip));


// Host www.bootstrapcdn.com có các IP
// 54.84.220.80
// 52.203.100.2
// 54.226.184.31
// 34.235.106.23
// 54.159.163.191
// 54.164.152.149
// 34.196.72.78
// 34.195.37.70

Lớp Ping

Lớp Ping (System.Net.NetworkInformation.Ping), lớp này cho phép ứng dụng xác định một máy từ xa (như server, máy trong mạng ...) có phản hồi không.

var ping = new Ping();
var pingReply = ping.Send("google.com.vn");
Console.WriteLine(pingReply.Status);
if (pingReply.Status == IPStatus.Success)
{
    Console.WriteLine(pingReply.RoundtripTime);
    Console.WriteLine(pingReply.Address);
}

// Success
// 322
// 172.217.24.195
Thư viện lớp (Bài trước)