2009-04-21 31 views
0

クライアント - サーバープログラムを作成しました。 gethostbyname(127.0.0.1)を呼び出して、異なる端末の同じマシン上でクライアントとサーバーの両方を実行すると、プログラムはうまく動作しています。我々は別のマシン間で通信する必要があります。だから私の質問は、どのように他のマシン(サーバー)のIPを決定するか、自分のマシンのIPを見つける方法です。それは単に私たちが望むものとして選ばれていますか?サーバーと自分のマシンのホスト名を取得するには?クライアント - サーバー間通信

おかげ

答えて

0

それはあなたがifconfigコマンドを使用して、システム上のインターフェイスに割り当てられたIPアドレスを発見することができますではなく、UNIX/Linux向けに動作しているかのプラットフォームは明らかではありません(あなたはに取得するにはrootになる必要があるかもしれませんこれはsbinフォルダ内にあることが多い)、Windowsではipconfigが同じ情報を取得します。

ネットワークにドメイン名解決が設定されていて、サーバーの名前が「server.mydomain.com」であれば、gethostbyname( "server.mydomain.com")を使用できます。ドメイン名サービス(DNS)の詳細については、ここから開始するよりも悪い可能性があります。http://en.wikipedia.org/wiki/Domain_name_system

+0

私はUNIX envoirementで働いています。 私たちは、ハブに接続されているLAN回線に接続されています.2台以上のマシン間で直接接続する必要がありますか?上記の接続は機能しますか? – mawia

+0

上記の接続は機能しますが、アーキテクチャ上は直接リンクよりもはるかに優れています。私は、UNIXネットワーク(http://reilly.com/catalog/9780596002978/)の理解を深めるために、O'Reillyによって出版されたTCP/IPネットワーク管理のコピーを入手することをお勧めします。あなたがその上に構築するための理解のしっかりした基盤。 – Lazarus

0

魔法のように他のマシンのIPを取得することはできません。サーバーやクライアントがIPをブロードキャストするネットワークアプリケーションで、それを知るか、何らかの種類のブロードキャストプロトコルを開発する必要があります。

自分のIPを取得することは、使用するプラットフォームと使用する言語によって異なります。

0

これがクライアント/サーバー環境の場合、クライアントはサーバーアドレスを知る必要があります。

gethostbynameを使用している場合、実際にサポートされている名前解決システム(DNS、NISなど)は、OSおよびシステム構成によって異なります。

最も一般的な構成は、DNSを使用することです。この場合、サーバーがネットワーク(または名前自体)上で自身の名前を簡単に検出できないことに注意してください。これは、クライアントが使用するネーミングサービスがサーバーの外部にあるためです。サーバーには、ホスト名とリゾルバのデフォルトドメインのローカルアイデアがありますが、DNSがサーバーのIPアドレスに外部的にマップするFQDNである必要はありません。

関連する問題