2011-08-16 27 views
1

私はwlanでBSDソケットを使用しています。私はそれに接続するときに私のサーバーコンピュータのIPアドレスが時折変わることに気づいた。問題は、リテラル文字列として私のコードにipアドレスを入力することです。だから私は変更するたびにコードに移動して変更する必要があります。どのように私はその時には何を使用するようにコードを変更することができますか?これはサーバーコードの呼び出しですBSDソケットでIPアドレスを見つけるには?

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0) 

クライアント側は同じです。私は両側のアドレスにNULLを試してみましたが、クライアントは接続せずに "Connection refused"というエラーを表示します。

ありがとうございました。

答えて

2

IPアドレスではなく、ホストファイルまたはDNSで検索できるドメイン名を使用します。

0

コマンドラインパラメータはどうですか?

int main(inr argc, char* argv[]) { 
    const char* addr = "myfancyhost.domain.com"; /* default address */ 
    if (argc > 1) { 
     addr = argv[1]; /* explicit address */ 
    } 
    if ((status = getaddrinfo(addr, ... 
+0

私はプログラムを実行するたびにIPアドレスを確認する必要はありません。私はちょうどそれが独自にipを取得したい。 – Sterling

+0

あなたはDNSを探していたと思います。 –

0

「あなたができる場合は、デフォルトをハードコーディングするのに、サーバーの名前を付け、およびコンフィギュレーションファイルにサーバ名を置く代わりに、それをハードコーディング、一般的に、そのアドレスを見つけるためにgethostbynameを使用して(と設定ファイルが壊れないことを確認してください)。

+0

これは間違った質問かもしれませんが、私はどのように "私のサーバに名前を付けるのですか?" – Sterling

+0

@スターリング:通常あなたのDNSにエントリを入れます(しかしそれはサーバーフォールトのものです...) –

関連する問題