ローカルネットワーク図のソフトウェア視覚化

様々なサブネットを持つ複雑なローカルネットワークは、 グラフに起因する分岐構造です。 コンピューターとルーターはグラフのノードとして表され、それらの間の接続はグラフのエッジです。



画像



この知識は、ローカルネットワークの表示にどのように役立ちますか?



クイックグラフ


グラフを操作するための優れた無料ライブラリ-QuickGraphがあります。 このライブラリのグラフの操作は非常に簡単に実装されています。



名前空間をインポートします。

Imports QuickGraph







グラフを宣言します。

Dim graph As New BidirectionalGraph(Of Object, IEdge(Of Object))







前述したように、コンピューターはグラフのノードです。 ノードを追加:

graph.AddVertex("")







Active Directoryからコンピューターのリストを取得します。

Dim de As New DirectoryServices.DirectoryEntry

Dim search As New DirectorySearcher(de)

search.Filter = "(objectCategory=computer)"

Dim results As SearchResultCollection = search.FindAll()

For i As Integer = 0 To results.Count - 1

Dim de2 As DirectoryEntry = results(i).GetDirectoryEntry

Dim ComputerName As String = CType(de2.InvokeGet("cn"), String)

graph.AddVertex(ComputerName)

Next








素晴らしいですが、結果はグラフのようなものです。 ノード間にリンクはありません。



ご存知のように、すべてのコンピューターには、接続されている共通ポイント(ルーター(ルーター))があります。 ローカルネットワークにルーターがない可能性がありますが、この場合、視覚化は非常に簡単です。



ネットワーク内の各コンピューターは、コンピューターのネットワークボードのプロパティでゲートウェイとしてアドレスが登録されているルーターに直接接続されています。



WMIを使用してコンピューターを歩く...

Private Function GetGateway(ByVal ComputerName As String) As String

Dim s As String = String.Empty

Dim query As ManagementObjectSearcher

Dim queryCollection As ManagementObjectCollection

Dim msc As ManagementScope = New ManagementScope("\\" + ComputerName + "\root\cimv2")

query = New ManagementObjectSearcher(msc, New SelectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration"))

queryCollection = query.Get()

For Each mObject As ManagementObject In queryCollection

Try

If mObject("DefaultIPGateway").ToString <> "" Then

s = mObject("DefaultIPGateway")(0).ToString

End If

Catch

End Try

Next

Return s

End Function








...すべてのゲートウェイのリストを取得します。 それらをグラフとコンピューターに追加します。

graph.AddVertex("")







ノードの追加とともに、コンピューターとゲートウェイ間の接続を追加します。

graph.AddEdge(New Edge(Of Object)("", ""))







グラフはありますが、視覚的なグラフはありません。



グラフ番号


QuickGraphは、グラフの視覚化のためにMSAGL、GLEE、Graphvizをサポートしていますが、グラフ#を使用します。 このフレームワークには、WPFアプリケーションでグラフを視覚化するためのさまざまなアルゴリズムが含まれています。



このフレームワークのコントロールをGraphLayuotフォームに配置し、前に作成したグラフを表示する簡単な行を記述します。

GraphLayout.Graph = graph







そして、それは私たちが必要とするすべてです。 残りはグラフ#で処理されます。



画像



参照:

クイックグラフ

グラフ番号



All Articles