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; }; namespace ssl { typedef basic_socket<sslv23, AF_INET> socket; typedef basic_sockstream<socket> sockstream; };
Overview
TCP などのストリームタイプのデータ通信を C++ の iostream のように行うためのクラスです. 現在のところ,TCP および UDP によるデータ通信をサポートしています.
sockstream は,boost::asio,namespace gimite を参考に作成しました.
Example
#include <iostream> #include <sstream> #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], 80); std::stringstream query; query << "GET /" << argv[2] << " HTTP/1.1\r\n"; query << "Host: " << argv[1] << "\r\n"; query << "\r\n"; ss << query.str() << std::flush; std::string buf; while (std::getline(ss, buf)) std::cout << buf << std::endl; } catch (clx::socket_error& e) { std::cerr << e.what() << std::endl; std::exit(-1); } catch (clx::sockaddress_error& e) { std::cerr << e.what() << std::endl; std::exit(-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 socket_type& 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); virtual ~basic_sockstream();
Related Pages
- CLX C++ Libraries - sockbuf
- CLX C++ Libraries - udp::socket
- CLX C++ Libraries - tcp::socket
- CLX C++ Libraries - ssl::socket