Declaration
template <
class Socket,
class CharT = char,
class Traits = std::char_traits<CharT>
>
class basic_sockstream : public Socket, public basic_iostream<CharT, Traits>;
namespace tcp {
typedef basic_socket<AF_INET> socket;
typedef basic_sockstream<socket> sockstream;
};
namespace udp {
typedef basic_socket<AF_INET> socket;
typedef basic_sockstream<socket> sockstream;
};
Overview
TCP などのストリームタイプのデータ通信を C++ の iostream のように行うためのクラスです. 現在のところ,TCP および UDP によるデータ通信をサポートしています.
sockstream は,boost::asio,namespace gimite を参考に作成しました.
Example
#include <iostream>
#include <string>
#include <cstdlib>
#include "clx/tcp.h"
int main(int argc, char* argv[]) {
if (argc < 3) return -1;
try {
/*
* 第1引数にホスト名(またはIPアドレス),
* 第2引数にポート番号(またはサービス名)を指定する.
*/
clx::tcp::sockstream ss(argv[1], argv[2]);
ss << "GET / HTTP/1.0\r\n\r\n";
std::string buf;
while (std::getline(ss, buf)) std::cout << buf << std::endl;
}
catch (clx::socket_error& e) {
std::cerr << e.what() << std::endl;
return -1;
}
catch (clx::sockaddress_error& e) {
std::cerr << e.what() << std::endl;
return -1;
}
return 0;
}
Template Parameters
- Socket
- TCP または UDP のソケットクラスを指定します.
- CharT
- 文字の型を指定します.デフォルト値は,char.
- Traits
- 文字列を扱うためのtraitsを指定します.デフォルト値は, std::char_traits<CharT>.
Related Types
typedef Socket socket_type; typedef std::basic_iostream<CharT, Traits> iostream_type; typedef CharT char_type; typedef std::basic_string<CharT, Traits> string_type; typedef basic_sockbuf<TransmitFunc, CharT, Traits> sockbuf_type; typedef typename sockbuf::size_type size_type;
Construction and Member Functions
explicit basic_sockstream(const descriptor& s, size_type n = 65536);
explicit basic_sockstream(const char_type* host, int port, size_type n = 65536);
explicit basic_sockstream(const string_type& host, int port, size_type n = 65536);
explicit basic_sockstream(const char_type* host, const char_type* service,
size_type n = 65536);
explicit basic_sockstream(const string_type& host, const string_type& service,
size_type n = 65536);
virtual ~basic_sockstream();