C# cơ bản .NET Core
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

Đăng ký nhận bài viết mới
Thư viện lớp (Bài trước)