この質問は、Given a Uri value how can one check whether it refers the local machine?に関連しており、満足のいく解決策はありませんでした。単一のネットワーククエリを使用せずにローカルWindowsボックスのすべてのIPアドレスとホスト名を検出するにはどうすればよいですか?
私はネットワークの往復をせずに、ローカルマシンのホスト名だけでなくIPアドレス(複数のネットワークカードがある場合は複数)を検出したいと思っています。ローカルテーブルに表示される情報のみを意味し、DNSクエリはありません。ところで、ドメイン名も発見されなければならない。
考え直しで、私は次の方法で行うことができます:
IP、ホスト名またはホスト+ドメイン名を受け入れ、アドレス場合はtrueを返しbool IsLocalAddress(string address);
は、ローカルマシンを指します。再度、複数のNICとドメインを考慮してください。
ありがとうございます。
P.S.
私はC#のコードサンプルが好きです。任意の言語が同様のコードを使用することができるように、WindowsのAPIが、同じ名前の二つの機能が含まれていることをグーグルでのショーの
import socket
socket.gethostname() # hostname
socket.gethostbyname(gethostname()) # host ip addr
ビット:あなたがこれを行うことがPythonの使用
DNSを持ち込むと、すべてのベットがオフになります。マシンは登録されているすべてのDNSエントリを知ることができません。 –
そうですが、マシン自体にローカルキャッシュがあるはずです。私はこのキャッシュを調べることが可能かどうか疑問に思っています。 – mark