• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ tcp::socket类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中ip::tcp::socket的典型用法代码示例。如果您正苦于以下问题:C++ socket类的具体用法?C++ socket怎么用?C++ socket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了socket类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: get_public_key_resp

ed_key c_netuser::get_public_key_resp(ip::tcp::socket &socket_) {
	DBG_MTX(dbg_mtx, "START");
	assert(socket_.is_open());
	boost::system::error_code ec;

	char header[2];
	DBG_MTX(dbg_mtx, "read header");
    size_t pkresp = socket_.read_some(buffer(header, 2), ec);
    DBG_MTX(dbg_mtx, "pk: " << pkresp << ":[" <<header[0] << header[1] << "]");

	DBG_MTX(dbg_mtx, "read public key size");
    size_t pub_key_size = 4;
    uint32_t key_size = 0;
    size_t recieved_bytes = socket_.read_some(buffer(&key_size, pub_key_size), ec);
    DBG_MTX(dbg_mtx, "size:" << recieved_bytes << ":[" <<key_size << "]");

    assert(recieved_bytes == pub_key_size);

    const std::unique_ptr<unsigned char[]> pub_key_data(new unsigned char[key_size]);

	DBG_MTX(dbg_mtx, "read public key data");
    recieved_bytes = socket_.read_some(buffer(pub_key_data.get(), key_size), ec);
    DBG_MTX(dbg_mtx, "data:" << recieved_bytes << ":[" << ed_key(pub_key_data.get(),recieved_bytes) << "]");
    assert(recieved_bytes == key_size);

    ed_key pub_key(pub_key_data.get(), key_size);
	DBG_MTX(dbg_mtx, "END");
	return pub_key;
}
开发者ID:MichalTigu,项目名称:antinet,代码行数:29,代码来源:c_netuser.cpp


示例2:

    ~asio_connection()
    {
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT >= 0x0600)
        socket_.cancel();
#endif
        //socket_.shutdown(socket_base::shutdown_both);
        socket_.close();
    }
开发者ID:shines77,项目名称:netlib_test,代码行数:8,代码来源:asio_connection.hpp


示例3: send_public_key_req

void c_netuser::send_public_key_req(ip::tcp::socket &socket_) {
	DBG_MTX(dbg_mtx, "send public key request");
	assert(socket_.is_open());
    boost::system::error_code ec;
    char pubkey_send_req[2] = {'p','k'};
    size_t sendbytes = socket_.write_some(boost::asio::buffer(pubkey_send_req, request_type_size),ec);
    DBG_MTX(dbg_mtx, "pk: " << sendbytes << ":[" << pubkey_send_req[0] <<  pubkey_send_req[1] << "]");

}
开发者ID:MichalTigu,项目名称:antinet,代码行数:9,代码来源:c_netuser.cpp


示例4: send_coin

void c_netuser::send_coin(ip::tcp::socket &socket_, const std::string &coin_data) {
	DBG_MTX(dbg_mtx, "START");
	assert(socket_.is_open());
    boost::system::error_code ec;
	char header[2] = {'$', 't'};
	socket_.write_some(buffer(header, 2), ec);

	uint32_t coin_data_size = coin_data.size();
	socket_.write_some(buffer(&coin_data_size, 4), ec);

	socket_.write_some(buffer(coin_data), ec);
}
开发者ID:MichalTigu,项目名称:antinet,代码行数:12,代码来源:c_netuser.cpp


示例5: do_write

inline void cia_client::do_write(boost::shared_ptr<chat_message> ch_msg)
{
	//BOOST_LOG_SEV(cia_g_logger, Debug) << "当前m_chat_msg_queue队列剩余元素:" << m_chat_msg_queue.Size();
	ptr self = shared_from_this();
	//BOOST_LOG_SEV(cia_g_logger, Debug) << "异步发送的数据为:" << std::endl; //<< ch_msg->m_procbuffer_msg.DebugString();
	//BOOST_LOG_SEV(cia_g_logger, Debug) << "rn id:" << ch_msg->m_procbuffer_msg.transid();
	if (!ch_msg->parse_to_cia_msg())
	{		
		BOOST_LOG_SEV(cia_g_logger, Debug) << "解析待发送的报文出错";
		//m_chat_msg_queue.Put(ch_msg);
		return;
	}
	m_sock_.async_send(boost::asio::buffer(ch_msg->data(), ch_msg->length()),
		[this, self, ch_msg](boost::system::error_code ec, std::size_t /*length*/){		
		if (ec){
			BOOST_LOG_SEV(cia_g_logger, Debug) << "异步发送数据回调函数,检测到异常, 关闭此客户端socket, 错误码" << ec;
			stop();
		}
		else
		{
			//BOOST_LOG_SEV(cia_g_logger, Debug) << "已成功异步发送数据, 数据的transid:" << ch_msg->m_procbuffer_msg.transid();
		}
		//m_chat_msg_queue.Put(ch_msg);
	});
}
开发者ID:ciaapp,项目名称:CIACommunicationServerV2,代码行数:25,代码来源:cia_client.hpp


示例6: set_socket_recv_bufsize

    void set_socket_recv_bufsize(int buffer_size)
    {
        boost::asio::socket_base::receive_buffer_size recv_bufsize_option(buffer_size);
        socket_.set_option(recv_bufsize_option);

        //std::cout << "set_socket_recv_buffer_size(): " << buffer_size << " bytes" << std::endl;
    }
开发者ID:shines77,项目名称:netlib_test,代码行数:7,代码来源:asio_connection.hpp


示例7: do_write_some

    void do_write_some()
    {
        //auto self(this->shared_from_this());
        socket_.async_write_some(boost::asio::buffer(data_, packet_size_),
            [this](const boost::system::error_code & ec, std::size_t bytes_written)
            {
                if (!ec) {
                    // If get a circle of ping-pong, we count the query one time.
                    do_query_counter();

                    if ((uint32_t)bytes_written != packet_size_) {
                        std::cout << "asio_connection::do_write_some(): async_write(), bytes_written = "
                                  << bytes_written << " bytes." << std::endl;
                    }

                    do_read_some();
                }
                else {
                    // Write error log
                    std::cout << "asio_connection::do_write_some() - Error: (code = " << ec.value() << ") "
                              << ec.message().c_str() << std::endl;
                    stop(true);
                }
            }
        );
    }
开发者ID:shines77,项目名称:netlib_test,代码行数:26,代码来源:asio_connection.hpp


示例8: Connect

	void Connect(const std::string& host, uint16 port)
	{
		using namespace std::placeholders;
		_socket.async_connect(ip::tcp::endpoint(ip::address::from_string(host), port)
			, std::bind(&Impl::OnConnected, this, _1));
		
	}
开发者ID:erio-nk,项目名称:MyCxxProgram2011,代码行数:7,代码来源:Session.cpp


示例9: session

future<void> session(ip::tcp::socket s, size_t block_size) {
  vector<char> buf(block_size);
  s.set_option(ip::tcp::no_delay(true));
  for (;;) {
    auto n = co_await async_read_some(s, buffer(buf.data(), block_size));
    n = co_await async_write(s, buffer(buf.data(), n));
  }
}
开发者ID:GorNishanov,项目名称:await,代码行数:8,代码来源:hard1.cpp


示例10: get_socket_recv_bufsize

    int get_socket_recv_bufsize() const
    {
        boost::asio::socket_base::receive_buffer_size recv_bufsize_option;
        socket_.get_option(recv_bufsize_option);

        //std::cout << "receive_buffer_size: " << recv_bufsize_option.value() << " bytes" << std::endl;
        return recv_bufsize_option.value();
    }
开发者ID:shines77,项目名称:netlib_test,代码行数:8,代码来源:asio_connection.hpp


示例11: resolver

 // Constructor
 Connection(std::string server_url)
   : io_service_(), socket(io_service_)
 {
   tcp::resolver resolver(io_service_);
   tcp::resolver::query query(server_url, "4444"); // EDIT PORT NUMBER HERE
   tcp::resolver::iterator iterator = resolver.resolve(query);
   socket.connect(*iterator);
 }
开发者ID:SysSynBio,项目名称:sink,代码行数:9,代码来源:sink_client.cpp


示例12: recv_coin

string c_netuser::recv_coin(ip::tcp::socket &socket_) {
	DBG_MTX(dbg_mtx, "START");
	assert(socket_.is_open());
	boost::system::error_code ec;

    size_t recieved_bytes = 0;

	uint32_t coin_size = 0;
	recieved_bytes = socket_.read_some(buffer(&coin_size, 4), ec);
	DBG_MTX(dbg_mtx, "get " << recieved_bytes << " bytes");
	assert(recieved_bytes == 4);

	const std::unique_ptr<char[]> coin_data(new char[coin_size]);

	recieved_bytes = socket_.read_some(buffer(coin_data.get(), coin_size), ec);
	assert(recieved_bytes == coin_size);
	return std::string(coin_data.get(), coin_size);
}
开发者ID:MichalTigu,项目名称:antinet,代码行数:18,代码来源:c_netuser.cpp


示例13: send_public_key_resp

void c_netuser::send_public_key_resp(ip::tcp::socket &socket_) {
	DBG_MTX(dbg_mtx, "START");
	assert(socket_.is_open());
	boost::system::error_code ec;
	char header[2] = {'p', 'k'};
	DBG_MTX(dbg_mtx, "send header");
	socket_.write_some(buffer(header, 2), ec);
	//uint32_t packet_size = ed25519_sizes::pub_key_size;
    ed_key packet = get_public_key();
	uint32_t packet_size = packet.size();
	// TODO send binary data
	DBG_MTX(dbg_mtx,"send public key size" << "[" << packet_size << "]");
    socket_.write_some(boost::asio::buffer(&packet_size, 4), ec);

    DBG_MTX(dbg_mtx,"send public key data" << "[" << packet << "]");
    socket_.write_some(boost::asio::buffer(packet.c_str(), packet_size), ec);
    DBG_MTX(dbg_mtx,"end of sending public key");
}
开发者ID:MichalTigu,项目名称:antinet,代码行数:18,代码来源:c_netuser.cpp


示例14: server_read

void c_netuser::server_read(ip::tcp::socket socket_) {
	DBG_MTX(dbg_mtx, "START");
	assert(socket_.is_open());
    boost::system::error_code ec;
    DBG_MTX(dbg_mtx,"server read");
	while (!ec && !m_stop_flag) {
		char header[2] = {0, 0};
		socket_.read_some(buffer(header, 2), ec);
		if (header[0] == 'p' && header[1] == 'k') {
			send_public_key_resp(socket_);
		}
		else if (header[0] == '$' && header[1] == 't') {
			std::string coin_data = recv_coin(socket_);
			recieve_from_packet(coin_data);
		}
	}
	socket_.close();
}
开发者ID:MichalTigu,项目名称:antinet,代码行数:18,代码来源:c_netuser.cpp


示例15: stop

void cia_client::stop()
{
	if (!m_started_) return;
	m_started_ = false;
	m_sock_.close();
	m_deal_ch_msg_group.interrupt_all();

	ptr self = shared_from_this();
	auto it = std::find(clients.begin(), clients.end(), self);
	clients.erase(it);
	BOOST_LOG_SEV(cia_g_logger, Debug) << "客户端socket已经调用stop函数关闭";
	//x m_config_server->set_started(true);	// 为了防止网络情况异常, 造成服务端关闭连接后重置此值为2, 通讯端保证此值为1
}
开发者ID:ciaapp,项目名称:CIACommunicationServerV2,代码行数:13,代码来源:cia_client.hpp


示例16: input

channel::channel(ip::tcp::socket& input, ip::tcp::socket& output, session& parent_session, const time_duration& input_timeout, bool first_input_stat)
    : input(input)
    , output(output)
    , input_timer(input.io_service())
    , input_timeout(input_timeout)
    , pipe_size(0)
    , parent_session(parent_session)
    , input_handler(boost::bind(&channel::finished_waiting_input, this, placeholders::error(), placeholders::bytes_transferred()))
    , output_handler(boost::bind(&channel::finished_waiting_output,this, placeholders::error(), placeholders::bytes_transferred()))
    , current_state(created)
    , first_input(first_input_stat)
{
    if (pipe2(pipe, O_NONBLOCK) == -1)
    {
        perror("pipe2");
        throw boost::system::errc::make_error_code(static_cast<boost::system::errc::errc_t> (errno));
    }
}
开发者ID:pimentium,项目名称:fastproxy,代码行数:18,代码来源:channel.cpp


示例17: do_read_some

 void do_read_some()
 {
     socket_.async_read_some(boost::asio::buffer(data_, packet_size_),
         [this](const boost::system::error_code & ec, std::size_t received_bytes)
         {
             if ((uint32_t)received_bytes != packet_size_) {
                 std::cout << "asio_connection::do_read_some(): async_read(), received_bytes = "
                           << received_bytes << " bytes." << std::endl;
             }
             if (!ec) {
                 // A successful request, can be used to statistic qps
                 do_write_some();
             }
             else {
                 // Write error log
                 std::cout << "asio_connection::do_read_some() - Error: (code = " << ec.value() << ") "
                           << ec.message().c_str() << std::endl;
                 stop(true);
             }
         }
     );
 }
开发者ID:shines77,项目名称:netlib_test,代码行数:22,代码来源:asio_connection.hpp


示例18: do_write

 void do_write(ip::tcp::socket & sock, char * buff, size_t size) {
     if ( !started() ) return;
     sock.async_write_some(buffer(buff,size), 
                           MEM_FN3(on_write,ref(sock),_1,_2));
 }
开发者ID:feng1o,项目名称:boost-asio,代码行数:5,代码来源:proxy.cpp


示例19:

 // Destructor
 ~Connection()
 {
   socket.close();
 }
开发者ID:SysSynBio,项目名称:sink,代码行数:5,代码来源:sink_client.cpp


示例20: read_complete

 size_t read_complete(ip::tcp::socket & sock, 
                      const error_code & err, size_t bytes) {
     if ( sock.available() > 0) return sock.available();
     return bytes > 0 ? 0 : 1;
 }
开发者ID:feng1o,项目名称:boost-asio,代码行数:5,代码来源:proxy.cpp



注:本文中的ip::tcp::socket类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ ip6::MessageInfo类代码示例发布时间:2022-05-31
下一篇:
C++ iortable::Table_var类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap