0

特定のネットワーク上のすべてのコンピューターの名前と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アドレスです。

4

3 に答える 3

1

接続文字列をlocalhostとして設定している場合は、「127.0.0.1」に変更するだけで、エラーが削除されます。

于 2015-09-01T05:15:53.367 に答える
0

こちらの投稿を確認してください

SocketException:要求されたプロトコルと互換性のないアドレス

これが問題の原因を説明しています。

于 2012-07-05T14:17:59.570 に答える
0

私の場合、このexeの別のインスタンスはすべて実行可能です。タスクマネージャーから閉じたところ、解決しました。

于 2016-03-22T09:39:59.020 に答える