2010-05-20 92 views
5

有沒有一種優雅的方法可以讓程序檢測連接到網絡的新計算機?自動檢測連接到網絡的新計算機

我希望我的程序能夠「自動感知」正在網絡中連接的新計算機(它們位於同一網絡中)。就像連接到電腦的USB設備一樣。

我現在正在做的是不時地保存網絡中所有計算機的列表。另一種方法是PING子網上所有可用的IP。

還有其他優雅的方法嗎?

謝謝!

回答

4

監聽ARP請求是執行此操作的標準方法。不管DHCP與否,任何希望與外界通信的連接計算機都必須爲默認路由器的地址發出ARP請求。該請求將以廣播形式發佈,幷包含源接口的MAC和IP地址。

如果另一臺計算機使用DHCP,它將爲其自己的地址發出ARP請求,作爲重複地址檢測的一部分,這也是您可以窺探的廣播。

(這對IPv6的作品或多或少以同樣的方式,除非你需要尋找的鄰居發現或路由器soliciation包代替。)

一樣的答案提到,如果你有一個開關,你可以telnet或使用SNMP,您可以提取MAC表。這將爲您提供交換機中每個端口上的MAC地址列表。但是,如果您想要IP地址,您仍然需要監聽ARP:s。

另一方面,如果您有權訪問網絡上的默認網關,那麼您也可以在那裏查看ARP表。這將爲您提供MAC和IP地址給最近(與最近的不同值)進行通信的任何人。

1

如果您有某種託管交換機,您可以連接到該交換機,這將是一個相當優雅的方法。

如果您位於域中,則可以從域控制器獲取加入域的所有計算機的列表。

如果失敗了,我所能想到的只是一個挑戰/迴應的事情(例如ping通它們)或者通過檢測它們發送的流量(參見this question也許是一個起點?),這兩者都不會讓我成爲一個優雅做法。

+0

偵聽DHCP流量可能是一種方法,因爲它總是廣播。 (DHCP也不能以任何其他方式完成;附加機器不知道該與誰進行交談......) – 2010-05-20 12:39:56

+0

我不太瞭解如何使用「託管」交換機。你能稍微解釋一下嗎? – Ian 2010-05-20 13:15:55

+0

觀看ARP流量是另一種方式 - 這也是通過廣播發送的,並且新機器不會在沒有發送ARP請求的情況下進行多少通信。 – caf 2010-05-21 01:38:26