1

LAN ネットワーク上のすべてのホストを取得することは可能ですか (C を使用)。IP アドレスとホスト名を取得する必要があります。

4

1 に答える 1

1

この回答で説明されているように、サブネット内のすべてのホストに ping を実行し、ARP キャッシュに応答またはアクセスするホストを確認します。最初のアプローチは、次を使用して raw ソケットを作成することによって実現されます。

int sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP));

ただし、生のソケットは基本的に IP ヘッダーのみを提供するため、ICMP エコー パケットを自分で作成する必要があります。作成したら、サブネット内のすべての IP に送信しsendto()、応答を待ちます。2 番目のアプローチについては、このようなものを読むことをお勧めします。

ホスト名の決定に関しては、ホストに DNS 名または NETBIOS 名があるかどうかによって異なります。LAN に DNS が構成されている場合はgetaddrinfo()、応答するアドレスを呼び出して問題を解決できます。残念ながら、特定の IP の NETBIOS 名を見つける方法がわかりません。

于 2013-05-22T21:20:46.790 に答える