Declaration
// socket_intとsocklen_typeのみグローバル名前空間で宣言 #ifdef CLX_WIN32 typedef SOCKET socket_int; typedef int socklen_type; #else typedef int socket_int; typedef socklen_t socklen_type; #endif template < int Type, int Family, int Protocol = 0 > class basic_rawsocket; class socket_error;
Overview
rawsocket は,ソケットのラッパクラスです.このクラスから各種ソケットクラス (udp::socket,tcp::socket, tcp::acceptor,icmp::socket) へ派生します.現在は,POSIX および Winsock に対応しています.socket_error は, ソケットを用いた通信中に何らかのエラーが発生した場合に送出される例外です. ユーザには,errno に対応するエラーメッセージを知らせます.
Template Parameters
- Type
- ソケットタイプを指定します.
- Family
- プロトコルファミリーを指定します.
- Protocl
- プロトコルを指定します.デフォルト値は,0 (詳細は,Manpage of SOCKET を参照して下さい).
Construction and Member Functions
basic_rawsocket(); explicit basic_rawsocket(const basic_rawsocket& cp); explicit basic_rawsocket(socket_int s); virtual ~basic_rawsocket();
コンストラクタに引数が指定された場合,指定された引数で assign() メソッドを実行します. assign() メソッドに関しては後述します.
basic_rawsocket& assign(const basic_rawsocket& cp); basic_rawsocket& assign(socket_int s);
引数に basic_rawsocket クラスが指定された場合は,同じソケットを共有する basic_rawsocket のコピーを生成します.ここで生成された 2 つの basic_rawsocket は同じソケットを共有する為,どちらか一方が close() メソッドを実行すると, もう片方の basic_rawsocket も通信が終了します.
引数に socket_int が指定された場合は,指定された引数を基に新たな basic_rawsocket を生成します.
virtual socket_int open(); virtual void close();
open() メソッドは,ソケット通信を行うための新たなソケットを取得し, そのソケットを基にして basic_rawsocket を初期化します.
close() メソッドは,ソケット通信を明示的に終了します. 前述したように,コピーコンストラクタなどを通じて複数の basic_rawsocket が 1 つのソケットを共有している場合,それらの basic_rawsocket の 1 つが close() メソッドを実行した時点で他の basic_rawsocket もそれ以上通信を行う事ができなくなります. 尚,close() メソッドを実行せずに終了した場合,同じソケットを共有している basic_rawsocket の中で最後に実行されたデストラクタによって通信が終了します.
socket_int socket() const;
ソケットを返します.この値は,ユーザがシステムコールを直接操作する場合に必要になります.
Related Pages
- CLX C++ Libraries - udp::socket
- CLX C++ Libraries - tcp::socket
- CLX C++ Libraries - tcp::acceptor
- CLX C++ Libraries - icmp::socket