CLX C++ Libraries
Home >> tcp::socket

Declarations

namespace tcp {
    template <
        int Family,
        class CharT = char,
        class Traits = std::char_traits<CharT>
    >
    class basic_socket : public basic_rawsocket<SOCK_STREAM, Family>;
    
    typedef basic_socket<AF_INET> socket;
    typedef basic_sockaddress<AF_INET, IPPROTO_TCP> sockaddress;
};

Overview

tcp::socket は,サーバ/クライアント型モデルで TCP による通信を行う際に使用するソケットを生成するためのクラスです.tcp::socket は, サーバへ接続要求を送信して TCP コネクションを確立するまでの作業を担います. その後の実際のデータ転送は,tcp::sockstream(詳細は sockstreamを参照)を用いて行います.

Example

// example_tcp_client.cpp
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
#include "clx/tcp.h"

int main(int argc, char* argv[]) {
    if (argc < 3) return -1;
    
    try {
        clx::tcp::socket s;
        s.connect(host, port);
        clx::tcp::sockstream tcps(s);
        while (1) {
            std::string buf;
            std::cin >> buf;
            if (std::cin.eof()) break;
            tcps << buf;
        }
        s.close();
    }
    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

Family
プロトコルファミリーを指定します.
CharT
文字の型を指定します.デフォルト値は,char.
Traits
文字列を扱うためのtraitsを指定します.デフォルト値は, std::char_traits<CharT>.

Related Types

typedef basic_rawsocket<SOCK_STREAM, Family> rawsocket;
typedef basic_sockaddress<Family, IPPROTO_TCP> sockaddress;
typedef CharT char_type;
typedef typename std::basic_string<CharT, Traits> string_type;

Construction and Member Functions

basic_socket();
basic_socket(const basic_socket& cp);
explicit basic_socket(soket_int s, const sockaddress& addr);
explicit basic_socket(const char_type* host, int port);
explicit basic_socket(const string_type& host, int port);
explicit basic_socket(const char_type* host, const char_type* service);
explicit basic_socket(const string_type& host, const string_type& service);
explicit basic_socket(const socket_type& s, const sockaddress& addr);
virtual ~basic_socket();

basic_socket& connect(const char_type* host, int port);
basic_socket& connect(const string_type& host, int port);
basci_socket& connect(const char_type* host, const char_type* service);
basic_socket& connect(const string_type& host, const string_type& service);

const sockaddress& address() const;

int send(const char_type* dat, int n);
int recv(char_type* buf, int n);

Related Pages

  1. CLX C++ Libraries - tcp::acceptor
  2. CLX C++ Libraries - sockstream