私はudpサーバー/クライアントアプリケーションに取り組んでいます。サーバーと通信するため、すべてのクライアントはサーバーの IP アドレスとポート番号を知っている必要があります。この目的のために、クライアントが毎回同じ IP とポート番号に接続するように、サーバーの IP とポート番号をクライアントにハードコーディングしました。(ipconfigコマンドを使用してサーバーマシンのIPアドレスを見つけました。)しかし、問題は、DHCPネットワークで作業していることです。サーバーマシンを再起動するたびに、新しいIPアドレスが割り当てられる可能性があります(クライアントが接続するクライアントが知っているIPアドレスとは異なります。)したがって、クライアント側でハードコーディングされたIPアドレスを、ログインするたびにサーバーマシンに割り当てる必要があります。それを行う方法はありますか?私はそれについて何も知りません。インターネットで検索しましたが、関連するものが見つかりませんでした。
4 に答える
あなたがLANで作業していると仮定すると、それが私が行う方法です。
DHCP サーバーが十分に構成可能であると仮定します。
- dhcp サーバーに静的マップの MAC アドレス/IP アドレスを割り当てて、同じマシンが常に同じ IP を取得するようにします (すべてのクライアントではなく、サーバーに対してのみ)。
DHCP を備えたほとんどのエントリ レベルのオールインワン デバイスにはこの機能があります。DHCP サーバーが実際のコンピューターである場合は、そのように構成できます。
さらに、ローカル DNS を使用するようにクライアントに指示し、このローカル DNS サーバーでサーバーの名前を定義すると、クライアントで IP アドレスをハードコーディングする必要がなくなります。ただし、アドレスは、いずれの場合もハードコーディングするのではなく、何らかの構成ファイルに配置する必要があります。
私はdnsmasqを使用して、ローカル名を持つDNSサーバーとDHCPサーバーの両方として機能し、サーバーに常に同じアドレスを与え、すべてのDNSリクエストをそれ自体に向けました。
この質問は、dnsmasq の Windows の代替手段を見つけるのに役立ちます: https://stackoverflow.com/questions/7709744/is-there-something-like-dnsmasq-for-windows
開発者の焦点が狭い場合、DHCP 予約は論理的なステップかもしれません。ただし、ネームサーバーを使用する方がはるかに優れています。ネットワーク自体が変更された場合、またはサーバーが別のサブネットまたは別のゾーンに移動された場合、サーバーのアドレスが変更されるため、DHCP 予約からの IP アドレスの使用は失敗します。
ネームサーバーを使用すれば、これらの問題は発生しません。それが DNS の本来の役割です。サービスが実行されているホストからサービスを切り離す「サービスプロバイダー検索サービス」と考えてください。
そして、すでに示唆されているように、IP アドレスや DNS 名など、変更される可能性のあるものは (変更されないと思われる場合でも) ハードコーディングしないでください。設定不可)。