特定のネットワーク上のすべてのコンピューターの名前とIPアドレスを取得するアプリケーションを作成しています。これは、コンピューターにリモート接続するときに使用するテクニカルサポート用です。私はまだ開発中であり、自分のネットワークでのみテストしていますが、実行すると結果が得られず、これが出力に表示されます。
A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
私のコードは次のとおりです。
public List<NetworkComputer> getComputers( string domain )
{
List<NetworkComputer> computers = new List<NetworkComputer>();
DirectoryEntry entry = new DirectoryEntry( domain );
DirectorySearcher searcher = new DirectorySearcher( entry );
searcher.Filter = ("(objectClass=computer)");
searcher.SizeLimit = int.MaxValue;
searcher.PageSize = int.MaxValue;
foreach( SearchResult result in searcher.FindAll() )
{
if( result.GetDirectoryEntry().Name.StartsWith( "CN=" ) )
{
IPAddress ipAddress = null;
ipAddress = Dns.GetHostAddresses( result.GetDirectoryEntry().Name.Remove( 0, "CN=".Length ) )[0];
computers.Add( new NetworkComputer( result.GetDirectoryEntry().Name.Remove( 0, "CN=".Length ), ipAddress ) );
}
}
return computers;
}
}
}
IPアドレスを取得しようとせずに実行すると、問題なくすべてのコンピューターのリストが表示されます。問題を引き起こしているのはIPアドレスです。