TCPServer
模塊是采用Template Pattern
設(shè)計(jì)模式封裝了一個(gè)常規(guī)TCP
服務(wù)器。支持同時(shí)綁定多個(gè)地址進(jìn)行監(jiān)聽,只需要在綁定時(shí)傳入地址數(shù)組即可。還可以分別指定接收客戶端和處理客戶端的協(xié)程調(diào)度器
https://github.com/huxiaohei/tiger.git
實(shí)現(xiàn)初始化TCPServer
時(shí)需要制定兩個(gè)IO
調(diào)度器,分別用于接受客戶端和處理客戶端請(qǐng)求。在接受到客戶端連接請(qǐng)求時(shí),生成對(duì)應(yīng)的客戶端Socket
實(shí)例(前面在接受Socket模塊的時(shí)候已經(jīng)介紹過(guò),Socket所對(duì)應(yīng)的sock會(huì)在IO調(diào)度器中注冊(cè)讀寫事件),并將Socket實(shí)例交由handle_client
處理
因此,使用TCPServer
時(shí),必須從TCPServer
派生一個(gè)新類,并重新實(shí)現(xiàn)子類的handle_client
使用可以參考EchoServer
class EchoServer : public tiger::TCPServer {public:
void handle_client(tiger::Socket::ptr client) override {TIGER_LOG_D(tiger::TEST_LOG)<< "[handle client:"<< client<< "]";
auto buf = std::make_shared();
while (true) {buf->clear();
std::vectoriovs;
buf->get_enable_write_buffers(iovs, 1024);
int rt = client->recv(&iovs[0], iovs.size());
if (rt == 0) {TIGER_LOG_I(tiger::TEST_LOG)<< "[has closed client:"<< client<< "]";
break;
} else if (rt< 0) {TIGER_LOG_E(tiger::TEST_LOG)<< "[client error"
<< " erron:"<< strerror(errno)<< "]";
break;
}
buf->set_position(buf->get_position() + rt);
buf->set_position(0);
const std::string &msg = buf->to_string();
TIGER_LOG_D(tiger::TEST_LOG)<< "[Echo receive: "<< msg<< "]";
client->send(msg.c_str(), msg.size());
if (msg.find("stop") == 0) {TIGER_LOG_I(tiger::TEST_LOG)<< "[ECHO STOP]";
stop();
tiger::IOManager::GetThreadIOM()->stop();
}
}
}
};
void run() {auto addr = tiger::Address::LookupAny("0.0.0.0:8080");
auto ech_server = std::make_shared();
ech_server->bind(addr);
ech_server->start();
}
int main() {tiger::SingletonLoggerMgr::Instance()->add_loggers("tiger", "../conf/tiger.yml");
tiger::Thread::SetName("TCPServer");
TIGER_LOG_D(tiger::TEST_LOG)<< "[tcp_server test start]";
auto iom = std::make_shared("TCPServer", true, 1);
iom->schedule(run);
iom->start();
TIGER_LOG_D(tiger::TEST_LOG)<< "[tcp_server test end]";
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:高性能分布式網(wǎng)絡(luò)服務(wù)器--TCPServer模塊-創(chuàng)新互聯(lián)
本文鏈接:http://www.rwnh.cn/article14/jcdde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、定制開發(fā)、網(wǎng)站收錄、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容