我寫一個C#的WinForms程序來獲取所有連接到我的局域網,基於給定的IP地址範圍的計算機。如何根據IP地址範圍獲取僅限LAN上的計算機?
我使用Ping
類識別的計算機。 但這裏的問題是我從所有連接到局域網的設備(打印機,IP電話等)獲取響應。
請幫我過濾這些設備並從LAN只得到電腦。
我寫一個C#的WinForms程序來獲取所有連接到我的局域網,基於給定的IP地址範圍的計算機。如何根據IP地址範圍獲取僅限LAN上的計算機?
我使用Ping
類識別的計算機。 但這裏的問題是我從所有連接到局域網的設備(打印機,IP電話等)獲取響應。
請幫我過濾這些設備並從LAN只得到電腦。
好吧,有機會,打印機,電話等在他們的通用計算機上運行TCP/IP堆棧和一些專門的服務器軟件,所以它歸結爲你的一個什麼樣的「電腦」是定義。儘管如此,這聽起來像是比它的價值更麻煩,除非你能夠確定只有你認爲計算機會有的東西,而且它們都會有。在Windows網絡上,SMB也許 - 但這可能會捕獲一個通過SMB暴露存儲的NAS。
我不認爲有做你想做的事的一般方法。就像Lloyd指出的那樣,nmap做了一些指紋識別,但是這並不完美(它通常會非常接近特定的操作系統版本,但它不能說明哪種物理設備正在運行該操作系統)。
那麼有沒有其他方法可以找到?我試過用netapi32,但它需要指定域名,因爲我想列出所有的系統,而不管域/工作組我不能使用這個。我無法使用活動目錄服務,因爲我沒有所需的憑據。 – Prasad
有不訴諸其他的東西,如SNMP和AD在Windows講的沒有真正的方法和他們不是100%。例如,NMAP試圖做一些指紋印刷。 – Lloyd
你試圖完成什麼?一旦你找到了網絡上的所有電腦,你想做什麼?你對他們正在運行的操作系統感到困擾嗎? – Nick