web-dev-qa-db-ja.com

ホスト名をIPアドレスに解決する

クライアント/サーバーシミュレーションアプリケーションを開発しました。クライアントとサーバーを2つの異なるWindows XPマシンにデプロイしました。どういうわけか、クライアントはサーバーにリクエストを送信できません。

私は以下のオプションを試しました:

  1. IPアドレスを使用して、クライアントからサーバーマシンに正常にpingを送信しました。

  2. IPアドレスを使用して、サーバーからクライアントマシンに正常にpingを送信しました。

  3. 両方のマシンからnetstatコマンドラインツールをチェックしました。サーバーはLISTENINGモードで、クライアントはSYS_SENTモード。ただし、送信に使用している外部アドレスは、IPアドレスではなくホスト名です。

  4. クライアントからのホスト名を使用してpingされたサーバーマシンが失敗しました。

  5. サーバーからのホスト名を使用して、クライアントマシンにpingを送信しました。

クライアントがホスト名を使用してサーバーに接続しようとしているときに問題があると感じています。

ホスト名の代わりにIPアドレスを使用するようアプリケーションに強制する方法を教えてください。ホスト名をIPアドレスにマッピングする他の方法はありますか?

36
Mahesh

クライアントマシンに移動して、次を入力します。

nslookup server.company.com

もちろん、server.company.comをサーバーの実際のホスト名に置き換えます。

これにより、クライアントが使用しているDNSサーバー(ある場合)と、名前に問題があると考えられるものがわかります。

IPアドレスを使用するようにアプリケーションをforceするには、通常、ホスト名の代わりにIPアドレスを使用するようにアプリケーションを構成します。ホスト名がハードコードされている場合、またはアプリケーションが(他のコメントの1つが示すように)ホスト名をIPアドレスよりも優先して使用することを主張している場合は、おそらく運が悪いでしょう。

ただし、UNIXyシステムでは/etc/resolv.confおよび/etc/hosts、Windows-yシステムでは ローカルホストファイル など、ほとんどのマシンがホスト名を解決する方法を変更できます。

53
paxdiablo

ホスト名を解決するには、tracertを試してください。 IE IPアドレス8.8.8.8があるので、使用します; tracert 8.8.8.8

4
IT wannabe

これは、ネットワークアーキテクチャの詳細なしに答えることは困難です。調査すべき事項は次のとおりです。

  • クライアントやサーバーがNATデバイス、ファイアウォールなどの背後にある可能性はありますか?
  • IPアドレスのいずれかに、192.168.x.yや10.x.y.zなどの「ローカル」アドレスが含まれていますか?
  • ホスト名とは何ですか、それらは「実際の」DNS:可能な名前ですか、それともローカルまたはWindows固有の名前ですか。
  • クライアントはどのようにサーバーを検索しますか?ホスト名を保持するコードまたは設定データの場所が必要です。ルックアップを回避する場合は、代わりにIPを使用してみてください。
0
unwind

Windows XPには、適切に設定されていない場合、ネットワークトラフィックを妨害するWindowsファイアウォールがあります。管理者権限がある場合、コントロールパネルからWindowsファイアウォールアプレットにアクセスして、Windowsファイアウォールをオフにできます。Windowsファイアウォールをオフにしてアプリケーションが動作する場合、問題はおそらくファイアウォールの設定が原因です。

UDP/IPを使用して通信する複数のPCで実行するアプリケーションがあり、管理者権限を持たないユーザーがアプリケーションをPCで実行できるように実験を行っています。アプリケーションが複数のPC間で通信するには、管理者アカウントを使用してWindowsファイアウォールの設定を変更する必要がありました。

このアプリケーションでは、1台のPCがサーバーとして指定され、他のPCはサーバー/クライアントグループのクライアントであり、同じサブネット上に複数のグループが存在する場合があります。

最初の変更は、Windowsファイアウォールアプレットの[例外]タブの機能を使用して、通信に使用するポートの例外を作成することでした。

ホスト名のルックアップを使用しているため、クライアントはダッシュ付きのニーモニックプレフィックスとそれに続く割り当てられた端末番号(SERVER100-1など)で構成されるコンピューター名を使用して、割り当てられたサーバーを見つけることができます。これにより、割り当てられたクライアントを持つ複数のサーバーが同じサブネット上で共存できます。クライアントはプレフィックスを使用して割り当てられたサーバーのコンピューター名を生成し、ホスト名検索を使用して割り当てられたサーバーのIPアドレスを検出します。

サーバーPCのWindowsファイアウォールでファイルとプリンターの共有サービスポートが有効になっていない限り、コンピューター名([システムのプロパティ]ダイアログの[コンピューター名]タブで割り当てられた)を使用したホスト名検索は機能しません。

そのため、2つの変更を行う必要がありました。(1)通信に使用したポートの例外を設定し、(2)ホスト名検索を許可するために[例外]タブでファイルとプリンターサービスを有効にします。

**編集**

また、これを見つけることもできます Windowsで役立つMicrosoft Knowledge Baseの記事XP networking

そして、これを参照してください WindowsでのNETBIOS名前解決に関する記事

0

C関数getaddrinfo()を使用して、数値アドレス(ipv4とipv6の両方)を取得できます。サンプルコードを参照してください here

0
Sathya