TCP/IP ソケットプログラミング inet_pton
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
インターネットでは、TCP/IPと呼ばれるプロトコルが利用されています。 インターネットで使われるネットワークソフトウェアでは、OS が提供する socket と呼ばれる仕組みを利用しています。インターネットで通信するときには、いろいろなプロトコルが利用されています。たとえば、ブラウザでグーグルにアクセスするときには、 www.google.com といった名前が利用されています。この名前は、DNSと呼ばれる仕組みで、名前解決が行われ、はじめて、ブラウザは、グーグルのウェブサーバと通信ができます。
今回は、DNS を使わないときに、使うであろう、inet_ptonと呼ばれる関数について説明いたします。ネットワークソフトウァアプログラミングでは、inet_pton()を使用されることがあります。
ソケットプログラミング
ネットワークソフトウェアのクライアントプログラムであれば、以下の手順で、サーバに接続します。ホスト名から名前解決をして、接続する場合は、以下の流れになります。
1. ソケットの作成
2. 名前解決
3. 接続
IPアドレスを指定して、接続する場合は、以下の流れになります。
1. ソケットの作成
2. IPアドレスのネットワーク構造体への変換
3. 接続
inet_pton は、IPアドレスを指定した場合に使う関数になります。
inet_pton()の役割
inet_pton のプロトタイプは以下の通りです。int inet_pton(int af, const char * src, void * dst)
inet_pton()関数は、ドット区切りの数値のアドレス (ddd.ddd.ddd.ddd)をネットワーク構造体に変換し、dst にコピーしてくれます。
注意すべきこととして、 ホスト名を渡しても、ホスト名を解決してくれません。たとえば、 www.google.com を渡しても、期待した結果が得られないということになります。名前解決が必要な場合は、 gethostbyname()関数を利用します。
サンプルコード Inet_pton()
以下のサンプルコードは、 inet_pton のラッパー関数です。int Inet_pton(int af, const char * src, void * dst) { int r = inet_pton(af, src, dst); if (r < 0) { warn ("can not %s (%s)", __func__, src); } else if (r == 0) { warn ("can not %s (%s), invalid src", __func__, src); } return (r); }
利用例は以下の通りです。
struct sockaddr_in servaddr; if (Inet_pton (AF_INET, "192.168.0.3", & servaddr.sin_addr) != 1) { // error }
inet_ptonの戻り値について
inet_pton()の戻り値は3種類あります。負の値 | afでサポートされていないアドレスファミリを指定した場合 |
0 | srcが指定されたアドレスファミリに対して正しい表記ではない |
1 | 成功した場合 |
関連
[2008-07-01-1] socketプログラミング struct sockaddr_inのin_addrとは?[2008-06-16-2] Socketプログラミング gethostbyname()
[2008-06-16-1] Socketプログラミング inet_pton
ソケットプログラミングの書籍を探す
- TCP IP ソケットプログラミング をアマゾンで探す
- TCP IP ソケットプログラミング を楽天で探す
- TCP IP ソケットプログラミング をヤフーショッピングで探す
参照しているページ (サイト内): [2008-07-02-1] [2008-06-16-2] [2008-06-16-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12