socket

socketは、ソケット通信を行うためのクラスです。

  • ヘッダ: roast/io/socket.hpp
  • 名前空間: ::roast
  1. socket();
  2. socket(const char* host, int port);
  3. socket(const char* host, int port, int family, int socktype, int protocol);
  4. socket(int family, int socktype, int protocol);
  5. socket(const socket& from); // コピーコンストラクタ
  6. void open(const char* host, int port);
  7. void open(const char* host, int port, int family, int socktype, int protocol);
  8. void open(const open_params_type& param);
  9. void close();
  10. int read(void *buf, size_t size);
  11. template <typename T> int read(T *buf);
  12. char getc();
  13. int write(const void *buf, size_t size);
  14. int write(const void *buf, size_t size);
  15. int write(const char* str);
  16. template <typename T> int write(const T* buf);
  17. int print(const char* str)
  18. int recv(void *buf, size_t size);
  19. int send(const void *buf, size_t size);
  20. int send(const char* str);
  21. int send(char c);

コンストラクタ

コンストラクタでは、複数のオーバーロードがあります。

host, portを指定するコンストラクタは、ソケットのオープンまで行います。 それ以外のコンストラクタでは、ソケットの生成までです。 family, socktype, protocolが省略された場合は、TCP接続のソケットを生成します。

open()

接続を行います。既にオープンされている場合には、ソケットはクローズされます。

host, port, family, socktype, protocol の扱いについては、コンストラクタと同じです。 open_params_type 構造体を使用して、オープンを行うこともできます。

close()

既にソケットがオープンされている場合には、これをクローズします。 オープンされていない場合には何もしません。(エラーも発生しません)

read/write()

basic_io

recv/send()

read/write() のエイリアスです。

オブジェクトがコピーされた場合の動作

オブジェクトがコピーされた場合には、共有オブジェクトと同じ扱いになります。

両方のオブジェクトに、同じハンドルのソケットが使用され、全てのインスタンスが破棄された場合に、ソケットはクローズされます。