Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Tạo chương trình quét máy trong LAN?

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    40

    Mặc định Tạo chương trình quét máy trong LAN?

    Chào các bạn!
    Mình muốn viết 1 chương trình nhỏ có thể quét tên hoặc số IP của các computer trên LAN. Nhưng mình chưa biết phải bắt đầu từ đâu, mong các bạn chỉ dẫn thêm. Thanks nhiều.

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    40

    Mình đã tìm hiểu được 1 chút về vấn đề này , post lên đây để cùng tham khảo với mọi người :
    - Mình tạo một button để scan danh sách máy, và một listbox để hiển thị IP các máy
    - Ý tưởng của công việc này là tạo một object kiểu Ping, sau đó dùng method Send để gửi Internet Control Message Protocol (ICMP) echo message đến một host chỉ định nào đó(địa chỉ IP của máy trong LAN), rồi kiểm tra trạng thái của reply message để nhận biết máy này có đang nối kết với LAN hay không:
    Ping pingsender = new Ping();
    PingReply reply;
    String comp;
    int i;
    for (i = 1; i < 5; i++)
    {
    comp = "192.168.0." + Convert.ToString(i);
    reply = pingsender.Send(comp);
    if (reply.Status == IPStatus.Success)
    {
    listCom.Items.Add(comp);
    }
    }
    Vấn đề ở chỗ mình mới quét có 5 cái máy đầu tiên mà đã thấy chậm lắm rồi. Thê này thì khi quét đủ 254 địa chỉ IP thì sao? Chắc die luôn quá. Các bạn có giải pháp nào cho vấn đề này không vậy?

  3. #3
    Ngày gia nhập
    08 2006
    Nơi ở
    tp HCM
    Bài viết
    26

    Giải pháp này không phải của tôi, tôi đọc được đâu đó trên diễn đàn nào giờ cũng không nhớ, giờ thấy bạn abelegreen cần tôi mang ra cho bạn tham khảo.
    Nhân đây cũng cảm ơn tác giả của đoạn code sau đây đã chia sẻ giải pháp hay cho anh em (phần màu xanh sau đây là nguyên văn phần tôi đã sưu tầm ).

    Đầu tiên bạn phải referance đến thư viện System.DirectoryServices. sau đó tạo 1 lớp giả sử là GetListComs.
    Nội dung đoạn code để liệt kê các máy tính có trong mạng LAN như sau:

    using System;
    using System.Net;
    using System.Threading;
    using System.DirectoryServices;
    using System.Windows.Forms;

    namespace GetAllComputersInNetwork
    {
    public class GetListComs
    {
    public void getAllCom(ref TreeView treeComs)
    {
    DirectoryEntry parentEntry = new DirectoryEntry();
    try
    {
    parentEntry.Path = "WinNT:";
    foreach (DirectoryEntry childEntry in parentEntry.Children)
    {
    TreeNode newNode=new TreeNode(childEntry.Name);
    switch(childEntry.SchemaClassName)
    {
    case "Domain":
    TreeNode ParentDomain = new TreeNode(childEntry.Name);
    treeComs.Nodes.Add(ParentDomain);
    DirectoryEntry SubParentEntry=new DirectoryEntry();
    SubParentEntry.Path = "WinNT://" + childEntry.Name;
    foreach (DirectoryEntry SubChildEntry in SubParentEntry.Children)
    {
    TreeNode newNode1 = new TreeNode(SubChildEntry.Name);
    if (SubChildEntry.SchemaClassName == "Computer")
    ParentDomain.Nodes.Add(newNode1);
    }
    break;
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    }
    }
    }

    Sau đó tạo 1 Form mới, thêm một TreeView, đặt tên TreeView là tvwListComs, tạo tiếp 1 nút lệnh với tên btnGetListComs.
    Viết code cho sự kiện click của nút btnGetListComs như sau:

    private void btnGetListComs _Click(object sender, EventArgs e)
    {
    GetListComs lst = new GetListComs();
    lst.getAllCom(ref tvwListComs);
    }

    Chạy chương trình là xong!


    Tôi đã làm như hướng dẫn và kết quả rất tốt.
    Đã được chỉnh sửa lần cuối bởi minhtruc : 06-07-2007 lúc 08:50 AM.

  4. #4
    Ngày gia nhập
    06 2007
    Bài viết
    40

    Mình đã chạy thử đoạn code mà bạn post lên nhưng compiler đã báo lỗi như sau:
    "The type or namespace name 'DirectoryServices' does not exist in the namespace 'System' ...."
    Mình không biết vì sao lại có lỗi này.À, có chỗ này mình vẫn chưa hiểu lắm:
    Đầu tiên bạn phải referance đến thư viện System.DirectoryServices
    Hay là do mình bỏ qua bước này mà nó báo lỗi ?

  5. #5
    No Avatar
    zelda Khách

    Trích dẫn Nguyên bản được gửi bởi abelegreen Xem bài viết
    Mình đã chạy thử đoạn code mà bạn post lên nhưng compiler đã báo lỗi như sau:

    Mình không biết vì sao lại có lỗi này.À, có chỗ này mình vẫn chưa hiểu lắm:

    Hay là do mình bỏ qua bước này mà nó báo lỗi ?
    Đúng rồi, chưa add reference nên nó bị lỗi zậy đóa

  6. #6
    Ngày gia nhập
    04 2007
    Bài viết
    16

    Mặc định Tạo chương trình quét máy trong LAN?

    phải add refence System.DirectoryServices thì mới có thể sử dụng được namespace này chớ
    Việt Nam quang vinh muôn năm!!!!!!!!!!!!

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn