2017-09-12 10 views
1

MACアドレスを持つインターフェイスからDHCP要求を送信し、IPアドレス、ゲートウェイ、マスク、およびブロードキャストを取得するプログラムを作成します。アドレスをDHCPサーバーから取得します。DHCPを使用してIPアドレス、ゲートウェイ、マスク、およびブロードキャスト情報を取得する

私はDHCPクライアントのthis implementationを使用しましたが、IPアドレスとゲートウェイアドレスのみを提供します。

私はDHCPメッセージフォーマットについて読んで、マスクやブロードキャストのファイルを見つけられませんでした。しかし、dhcpclientとコマンドラインを使用しているとき、私は、インターフェイスがマスクとブロードキャストアドレスを持っていることをifconfigコマンドを使用して見ることができ、以下のように:

[email protected]:~/dhclient wlp2s0 
[email protected]:~/ifconfig wlp2s0 
wlp2s0 Link encap:Ethernet HWaddr 54:da:d0:15:4b:04 
     inet addr:153.179.154.55 Bcast:153.179.169.255 Mask:255.255.240.0 
     inet6 addr: fe80::2037:c031:5db1:445c/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:113 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:56 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:112130 (112.1 KB) TX bytes:9520 (9.5 KB) 

誰かがこの情報を取得する方法を教えてもらえますか?

+0

リモートマシンの情報を取得したいのですか? – ARG

+0

@ARG:自分のマシンの情報を取得したいが、自分のプログラムを使用し、dhcpclient – ARM

+0

@ ARMのようなコマンドラインツールを使用しないで、SIOCGIFADDR、http://www.microhowto.info/howto/get_the_ip_address_of_a_network_interface_in_c_using_siocgifaddr.htmlのようなものを使うことができる – ARG

答えて

3

this questionを参照してください。

私はあなたが自分のDHCPクライアントを作成しています。これは、生のソケットなどを使用して、ワイヤに直接バイトを置くことです。

あなたがGoogleの場合、DHCP hereまたは他の場所について読むことができます。ご覧のとおり、サブネットマスクはブロードキャストアドレスと同様にDHCPサーバーから取得できます。これは、DHCPサーバーとの通信時にDHCPオプションを使用して行われます。

正しい順序で正しいバイトをワイヤに配置し、必要な情報を得るために戻ってくるバイトを読み取る必要があります。

リンクしたクライアントを使用すると、ブロードキャストアドレスやサブネットマスクなど、DHCPサーバーからさらに多くの情報を要求して処理するコードを拡張できます。 DHCPオプションのフィールドに情報を問い合わせる方法については、DHCPのマニュアルを参照してください。

関連する問題