[[StartPage]]

* Network Programming [#kb352751]
** TCP接続 [#z71e2440]
Internet Protocol を用いたデータ交換は通常は TCP接続を用いるのが便利である。
*** Client [#t7788530]
Client program は、server に対し接続を試みる。通常の手順は
- socket の生成
- address の設定
- connect の発行

という手順を踏む。connect まで正常に行われると、send/recv を使って読み書きを行うことができるようになる。使い終わったら socket を閉じる。

*** Server [#a9698d41]
Server program の手順の概略は
- socket の生成
- 受け付け address の設定(bind)
- listen の発行
- 接続受付(accept)

である。受け付け用の socket と accept された時点で生成される通信用の socket の二つの socket が使われることに注意する。

*** address の設定 [#p1f78e2d]
Internet address の文字表現と(network libraryでの)内部表現の変換が必要になる。これには
- getaddrinfo

を用いる。この関数が受け付ける internet address の文字表現は、数値表現(IPv4 の dotted-decimal 表現か IPv6 の hexadecimal 表現)でもよいし、host 名でもよい。
getaddrinfo は構造体を確保して、その address を返す。確保された構造体は呼び出した側が
- freeaddrinfo

関数を用いて解放しなければならない。

従来は、inet_addr 関数と gethostbyname が用いられていたが、IPv4 のみしか使えないこと、また gethostbyname は thread safe ではない(この関数の仕様から thread safe にできない)ことから上記方法に変更されている。
 


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS