【问题标题】:C# on Linux: How to enumerate the computers on the local network?Linux 上的 C#:如何枚举本地网络上的计算机?
【发布时间】:2010-08-21 13:36:47
【问题描述】:

如何枚举本地网络中远程计算机的所有机器名称和 IP?

注意:不在 Windows 上(如何通过谷歌找到),我需要在 Linux 上工作的东西! 或者 C/C++ 示例也可以,我可以从 C# 调用 libc。

【问题讨论】:

  • 您需要重新构建您的问题。听起来您在要求 Windows 工作组网络上的计算机。这与 Windows 域上的计算机或其他类型的非 Windows 网络上的 OSX/Linux 计算机不同。
  • 只是通过有线和无线方式连接到同一路由器的计算机(Windows 和 Linux 计算机)。标准安装电脑,dhcp,没有域,什么都没有。

标签: c# .net linux mono network-programming


【解决方案1】:

您可以运行 smbtree 确保已安装 samba。

运行 smbtree,它将显示网络上的所有域、计算机和公共共享。将此详细信息写入文件并使用此文件获取所需信息

查看smbtree的输出

[paul@RHEL4b ~]$ smbtree
Password: 
WORKGROUP
    \\W2000          
PEGASUS
    \\WINXP          
    \\RHEL4B                        Pegasus Domain Member Server
        \\RHEL4B\ADMIN$                 IPC Service (Pegasus Domain Member Server)
        \\RHEL4B\IPC$                   IPC Service (Pegasus Domain Member Server)
        \\RHEL4B\domaindata             Active Directory users only
    \\HM2003  

WORKGROUP,PEGASUS是域名

W2000WINXPRHEL4BHM2003 这些是服务器名称

RHEL4B\ADMIN$, RHEL4B\IPC$, RHEL4B\domaindata 这些是股份

【讨论】:

    【解决方案2】:

    从samba中查看smbtree的来源。

    【讨论】:

      【解决方案3】:

      最简单的方法是发送广播 icmp 数据包,看看谁响应,然后计算。对于任何具有 tcp/ip 标准网络库的编程语言,这应该可以以非常标准的方式实现。

      【讨论】:

      • 你的意思是 ping 整个范围。
      • 这就是 ping 的作用,它发送一个带有回显请求的 ICMP 数据包。如果它被发送到网络的广播地址,网络上的所有计算机都会看到它并做出响应。这是网络概念的基础。广播地址是 IP 地址和子网掩码。用 ping 试试,你会明白我在说什么(在 Linux 中,ifconfig 会告诉你网络的广播地址是什么,并确保你的路由器允许这些数据包)。
      • 这个想法很好,只是没有计算机响应。我读到现在,这很正常。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2023-03-13
      • 2013-08-04
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多