Network Programming †TCP接続 †Internet Protocol を用いたデータ交換は通常は TCP接続を用いるのが便利である。 Client †Client program は、server に対し接続を試みる。通常の手順は
という手順を踏む。connect まで正常に行われると、send/recv を使って読み書きを行うことができるようになる。使い終わったら socket を閉じる。 Server †Server program の手順の概略は
である。受け付け用の socket と accept された時点で生成される通信用の socket の二つの socket が使われることに注意する。 address の設定 †Internet address の文字表現と(network libraryでの)内部表現の変換が必要になる。これには
を用いる。この関数が受け付ける internet address の文字表現は、数値表現(IPv4 の dotted-decimal 表現か IPv6 の hexadecimal 表現)でもよいし、host 名でもよい。 getaddrinfo は構造体を確保して、その address を返す。確保された構造体は呼び出した側が
関数を用いて解放しなければならない。 従来は、inet_addr 関数と gethostbyname が用いられていたが、IPv4 のみしか使えないこと、また gethostbyname は thread safe ではない(この関数の仕様から thread safe にできない)ことから上記方法に変更されている。 |