⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_messenger.cpp

📁 C++ web POSIX framewark
💻 CPP
字号:
#include "tcp_messenger.h"namespace cppcms {void messenger::connect(string ip,int port) {	ip_=ip;	port_=port;	error_code e;	socket_.connect(tcp::endpoint(aio::ip::address::from_string(ip),port),e);	if(e) throw cppcms_error("connect:"+e.message());	tcp::no_delay nd(true);	socket_.set_option(nd);}messenger::messenger(string ip,int port) :		socket_(srv_){	connect(ip,port);}messenger::messenger() :	socket_(srv_){}void messenger::transmit(tcp_operation_header &h,string &data){	bool done=false;	int times=0;	do {		try {			aio::write(socket_,aio::buffer(&h,sizeof(h)));			if(h.size>0) {				aio::write(socket_,aio::buffer(data,h.size));			}			aio::read(socket_,aio::buffer(&h,sizeof(h)));			if(h.size>0) {				vector<char> d(h.size);				aio::read(socket_,aio::buffer(d,h.size));				data.assign(d.begin(),d.begin()+h.size);			}			done=true;		}		catch(system_error const &e) {			if(times) {				throw cppcms_error(string("tcp_cache:")+e.what());			}			socket_.close();			error_code er;			socket_.connect(					tcp::endpoint(					aio::ip::address::from_string(ip_),port_),er);			if(er) throw cppcms_error("reconnect:"+er.message());			times++;		}	}while(!done);}	} // namespace cppcms

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -