当前位置: 首页>>代码示例>>C++>>正文


C++ SocketPtr::shutdown方法代码示例

本文整理汇总了C++中SocketPtr::shutdown方法的典型用法代码示例。如果您正苦于以下问题:C++ SocketPtr::shutdown方法的具体用法?C++ SocketPtr::shutdown怎么用?C++ SocketPtr::shutdown使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SocketPtr的用法示例。


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

示例1: main

int main() 
try {
    SocketFactoryPtr factory = SocketFactory::create_factory();
    SocketPtr socket = factory->create_socket( true );
    socket->signal_data_received().connect( handle_data );
    socket->signal_remote_disconnect().connect( handle_stop );
    socket->connect_to_server( "127.0.0.1", 1024 );
    while( true )
    {
        {
            std::lock_guard<std::mutex> l(g_stop_mutex);
            if( g_stop )
            {
                socket->shutdown();
                break;
            }
        }
        std::string msg;
        std::cout<<"say? ";
        getline( std::cin, msg );
        if( "QUIT" == msg )
        {
            std::lock_guard<std::mutex> l(g_stop_mutex);
            g_stop = true;
            socket->shutdown();
        }
        else if( "STOPLISTENER" == msg )
        {
            send_data( socket, msg );
            socket->shutdown();
            std::lock_guard<std::mutex> l(g_stop_mutex);
            g_stop = true;
        }
        else
        {
            send_data( socket, msg );
        }
    }
    return 0;
}
catch( boost::exception &error ) {
    int const *errorNo
                = boost::get_error_info<boost::errinfo_errno>( error );
    std::cerr<<"Error occurred [" <<strerror(*errorNo) <<"]"<<std::endl;
    return -1;
}
catch( std::exception &e ) {
    std::cerr<<"Error occurred [" <<e.what() <<"]"<<std::endl;
    return -1;
}
开发者ID:Tushar-Naik,项目名称:hpcl,代码行数:50,代码来源:client.cpp

示例2: downloadSoap

bool Downloader::downloadSoap(const std::string& guid)
{
	try
	{
		SocketPtr sock = connect("www.photosynth.net");

		//prepare header + content
		std::stringstream content;
		content << "<?xml version=\"1.0\" encoding=\"utf-8\"?>"<<std::endl;
		content << "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"<<std::endl;
		content << "	<soap12:Body>"<<std::endl;
		content << "		<GetCollectionData xmlns=\"http://labs.live.com/\">"<<std::endl;
		content << "		<collectionId>"<<guid<<"</collectionId>"<<std::endl;
		content << "		<incrementEmbedCount>false</incrementEmbedCount>"<<std::endl;
		content << "		</GetCollectionData>"<<std::endl;
		content << "	</soap12:Body>"<<std::endl;
		content << "</soap12:Envelope>"<<std::endl;

		std::stringstream header;
		header << "POST /photosynthws/PhotosynthService.asmx HTTP/1.1"<<std::endl;
		header << "Host: photosynth.net"<<std::endl;
		header << "Content-Type: application/soap+xml; charset=utf-8"<<std::endl;
		header << "Content-Length: "<<content.str().size()<<std::endl;
		header << ""<<std::endl;

		//send header + content
		boost::system::error_code error;
		boost::asio::write(*sock, boost::asio::buffer(header.str().c_str()), boost::asio::transfer_all(), error);
		boost::asio::write(*sock, boost::asio::buffer(content.str().c_str()), boost::asio::transfer_all(), error);

		sock->shutdown(tcp::socket::shutdown_send);

		//read the response
		boost::asio::streambuf response;
		while (boost::asio::read(*sock, response, boost::asio::transfer_at_least(1), error));

		sock->close();

		std::istream response_stream(&response);
		std::string line;

		//skip header from response
		while (std::getline(response_stream, line) && line != "\r");		

		//put soap response into xml
		std::stringstream xml;
		while (std::getline(response_stream, line))
			xml << line << std::endl;

		//save soap response
		if (!saveAsciiFile(Parser::createFilePath(guid, Parser::soapFilename), xml.str()))
			return false;		
	}
	catch (std::exception& e)
	{		
		std::cerr << e.what() << std::endl;
		return false;
	}
	return true;
}
开发者ID:aufheben1,项目名称:visual-experiments,代码行数:60,代码来源:PhotoSynthDownloader.cpp


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