StartPage

Network Programming

TCP接続

Internet Protocol を用いたデータ交換は通常は TCP接続を用いるのが便利である。

Client

Client program は、server に対し接続を試みる。通常の手順は

  • socket の生成
  • address の設定
  • connect の発行

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

Server

Server program の手順の概略は

  • socket の生成
  • 受け付け address の設定(bind)
  • listen の発行
  • 接続受付(accept)

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

address の設定

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
Last-modified: 2007-08-07 (火) 10:17:52 (84d)