欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Thrift第四課連接中斷異常處理-創(chuàng)新互聯(lián)

場景

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質(zhì),值得信賴!

Thrift框架采用了異常處理機制,當(dāng)客戶端異常斷開連接,服務(wù)端這個時候嘗試發(fā)送數(shù)據(jù)給客戶端,Thrift庫會拋出異常,導(dǎo)致進程中斷。這種情況是非常正常的,服務(wù)器端應(yīng)該捕獲異常的發(fā)生,但是不應(yīng)該異常退出。

在用戶調(diào)用的線程進行異常捕獲,這樣子不需要修改代碼

catch (const TTransportException& ttx)

{

//Thrift框架拋出的所有異常都會直接返回

std::cout<<ttx.what()<<std::endl;

return;

}

catch (const TException& ttx)

{

//Thrift框架拋出的所有異常都會直接返回

std::cout<<ttx.what()<<std::endl;

return;

}

分析一下服務(wù)器發(fā)送數(shù)據(jù)的函數(shù)

void TSocket::write(const uint8_t* buf, uint32_t len) {

uint32_t sent = 0;

while (sent < len) {

uint32_t b = write_partial(buf + sent, len - sent);

if (b == 0) {

// This should only happen if the timeout set with SO_SNDTIMEO expired.

// Raise an exception.

throw TTransportException(TTransportException::TIMED_OUT,

"send timeout expired");

}

sent += b;

}

}

但b==0拋出異常,代表當(dāng)前發(fā)送超時。while循環(huán)是為了循環(huán)發(fā)送,因為一次不一定發(fā)送完用戶數(shù)據(jù),畢竟MTU的限制。注意sent是一個無符號整型,當(dāng)b返回-1的時候,sent==0-1意味著將達到32位整數(shù)大值,大于len,從而直接退出循環(huán)。因為套接字已經(jīng)中斷,所以發(fā)送失敗,在調(diào)用write_partial函數(shù)的時候,返回b ==-1,導(dǎo)致退出循環(huán),從而避免了拋出異常,因此返回-1,是非常合理的值

問題
1)? 客戶端沒有調(diào)用close接口,關(guān)閉連接,服務(wù)器端只有唯一的一次closesocket代碼,輸出的字符串是\x1,目前暫時不知道在什么地方關(guān)閉套接字
2)? 線程在空閑的時候是如何進行等待事件請求的
3)? pendingTaskCountMax_ 參數(shù)的具體含義是什么
4)isOpen函數(shù)其實只是確保了連接是否成功,如果連接成功之后,如果服務(wù)器斷開或者客戶端斷開連接,這個時候判斷isOpen函數(shù)的返回值是沒有任何的效果的,這個時候只能夠通過thrift自身的斷開連接的檢測機制,目前尚不了解會在什么時機釋放連接

其他的處理細節(jié)

1)繼承TServerEventHandler類,獲取連接用戶的基本信息包括IP和端口,從而監(jiān)控是否保存有沒有清除的連接
TServerEventHandler類提供了用戶連接和斷開的時候,針對套接字的處理方式,其中提供了兩個函數(shù)
createContext 當(dāng)一個新的用戶連接的時候會被調(diào)用
deleteContext 當(dāng)用戶結(jié)束請求處理的時候會被調(diào)用
?
詳細的流程可以查看TThreadPoolServer::Task,Task作為TThreadPoolServer的內(nèi)部類,在Task::run函數(shù)內(nèi)部,當(dāng)有連接進來的時候,會獲取TServerEventHandler類的對象,判斷是否有實例化,對連接進行處理,詳細的代碼??
boost::shared_ptr<TServerEventHandler>eventHandler =
?server_.getEventHandler();
??
void* connectionContext = NULL;
if (eventHandler != NULL)
{????
?connectionContext =eventHandler->createContext(input_, output_);
}
?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:Thrift第四課連接中斷異常處理-創(chuàng)新互聯(lián)
文章位置:http://chinadenli.net/article26/djjdcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)商城網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站策劃Google、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国产精品丝袜一二三区| 视频一区日韩经典中文字幕| 免费观看在线午夜视频| 开心激情网 激情五月天| 欧美又大又黄刺激视频| 亚洲精品国产主播一区| 午夜久久久精品国产精品| 在线免费国产一区二区| 精品日韩视频在线观看| 日本高清中文精品在线不卡| 日本午夜免费观看视频| 精品一区二区三区免费看| 正在播放国产又粗又长| 激情综合网俺也狠狠地| 午夜福利视频日本一区| 高清不卡视频在线观看| 国产成人亚洲综合色就色| 欧美日韩在线视频一区| 狠狠做深爱婷婷久久综合| 久久成人国产欧美精品一区二区 | 国产欧美日韩精品自拍| 国产级别精品一区二区视频| 国产亚洲视频香蕉一区| 中文字幕无线码一区欧美| 91日韩在线视频观看| 丝袜视频日本成人午夜视频| 搡老妇女老熟女一区二区| 国产91色综合久久高清| 亚洲一区二区三区福利视频| 麻豆精品视频一二三区| 久久中文字人妻熟女小妇| 99久久国产精品免费| 欧美日韩人妻中文一区二区| 国产一区二区精品高清免费| 激情五月综五月综合网| 亚洲伦片免费偷拍一区| 东京热加勒比一区二区| 亚洲熟女诱惑一区二区| 国产自拍欧美日韩在线观看| 99久久精品免费看国产高清| 久久人妻人人澡人人妻|