- [C#] Hướng dẫn giải nén file *.rar với tiến trình progress bar winform
- [C#] Chia sẻ source code make Crazy Error Message Effect Bomb Windows
- [C#] Lập trình ứng dụng theo mô hình MVP Model-View-Presenter Pattern Winform
- [C#] Giới thiệu và những thứ hay ho từ thư viện System.Reactive của Microsoft
- [C#] Hướng dẫn tạo ứng dụng Chat với GPT sử dụng Open AI API
- [DEVEXPRESS] Tạo month picker trên DateEdit Winform C#
- [DATABASE] Cách sử dụng và lưu ý khi sử dụng khóa ngoại (Foreign Key) trong Sqlserver
- [C#] Garbage Collector (GC) là gì? Cách giải phóng bộ nhớ trên ứng dụng Winform khi các đối tượng không còn sử dụng
- [C#] Cách tính độ tương phản màu sắc Contrast Color mà con người có thể nhìn thấy được
- [C#] Hướng dẫn mã hóa mật khẩu tài khoản ứng dụng đúng chuẩn Men
- [C#] Sử dụng Open AI Chat GPT viết ứng dụng Count down timer có hiệu ứng trên winform
- [DATABASE] Chia sẻ dữ liệu Pantone Color sql và json api
- [SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger
- [C#] Hướng dẫn kiểm tra phiên bản NET Framework cài đặt ở máy tính
- [C#] Hướng dẫn đọc file excel đơn giản sử dụng thư viện Epplus
- [C#] ConcurrentBag là gì và cách sử dụng nó trong lập trình bất đồng bộ
- [C#] AutoResetEvent là gì và cách sử dụng
- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
[C#] Tìm tất cả thiết bị trong cùng lớp mạng Lan
Xin chào các bạn, bài viết hôm nay mình sẻ hướng dẫn các bạn cách tìm các thiết bị trong mạng LAN, để tìm các thiết bị có online trên mạng LAN hay không, chúng sẽ tiến hành thực hiện Ping một dãy IP cùng lớp mạng.
[C#] Find Device in Lan
Ví dụ: Địa chỉ IP của mình hiện tại là 172.16.66.8
Thì mình muốn tìm các thiết bị cùng lớp mạng 172.16.66, mình sẽ Ping địa chỉ IP từ 172.16.66.2 => 172.16.66.254.
Kết quả Ping nào trả về thành công, thì mình sẽ biết được thiết bị đó có online hay không.
Nếu các bạn Ping bình thường trong lớp mạng sẽ mất rất nhiều thời gian, ở tool này mình sử dụng multi thread để ping, nên thời gian ping 1 range vậy khoảng chưa đến 3 giây là hoàn thành.
Demo ứng dụng Find Device in Lan C#:
Source code Ping device c#:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FindDevice
{
public partial class FormMain : Form
{
private string BaseIP = "172.16.0.";
private int StartIP = 2;
private int StopIP = 255;
private string ip;
private string list_ip;
private int timeout = 3000;
private int nFound = 0;
static object lockObj = new object();
Stopwatch stopWatch = new Stopwatch();
TimeSpan ts;
public FormMain()
{
InitializeComponent();
}
private void buttonSweepAsync_Click(object sender, EventArgs e)
{
RunPingSweep_Async(txt_ip.Text);
}
public async void RunPingSweep_Async(string txt_ip)
{
nFound = 0;
list_ip = "";
BaseIP = txt_ip + ".";
var tasks = new List<Task>();
stopWatch.Start();
for (int i = StartIP; i <= StopIP; i++)
{
ip = BaseIP + i.ToString();
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
var task = PingAndUpdateAsync(p, ip);
tasks.Add(task);
}
await Task.WhenAll(tasks).ContinueWith(t =>
{
stopWatch.Stop();
ts = stopWatch.Elapsed;
richTextBox1.BeginInvoke(new Action(() =>
{
richTextBox1.Text = list_ip;
lblresult.Text = nFound.ToString() + " thiết bị được tìm thấy! Elapsed time: " + ts.ToString();
}));
});
}
private async Task PingAndUpdateAsync(System.Net.NetworkInformation.Ping ping, string ip)
{
var reply = await ping.SendPingAsync(ip, timeout);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
lock (lockObj)
{
list_ip += ip + Environment.NewLine;
nFound++;
}
}
}
}
}
Thanks for watching!