亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 10138 | 回復(fù): 9
打印 上一主題 下一主題

[其它] 嵌入式工程師互助:34分鐘12問14答解決“服務(wù)器端定時(shí)檢測在線的客戶端—心跳處理” [復(fù)制鏈接]

論壇徽章:
7
天蝎座
日期:2014-06-04 13:29:02子鼠
日期:2014-06-16 10:07:08IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-06-06 22:20:002015亞冠之迪拜阿赫利
日期:2015-06-08 15:24:21IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之阿爾沙巴布
日期:2015-06-18 16:37:30IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-02 11:12 |只看該作者 |倒序?yàn)g覽
背景:如果您有棘手的技術(shù)問題,您會(huì)選擇什么方式解決?百度一下搜索網(wǎng)絡(luò)答案?還是找一位高手求問!高手可遇不可求,實(shí)際問題場景中,也是仁者見仁或猴子快上樹或鳥兒空中飛,互聯(lián)網(wǎng)飛速發(fā)展,IT168企業(yè)級(jí)一直陪伴著大家,從論壇、全國技術(shù)沙龍到技術(shù)峰會(huì)(DTCC\SACC\高峰精英論壇),我們一直在努力平衡“廣大技術(shù)從業(yè)者技術(shù)提升”與“IT廠商新產(chǎn)品及服務(wù)的普及。我們一直在路上,或行走或奔跑,我們路行之風(fēng),是否能涼爽到路過的你?

關(guān)于技術(shù)問與答,建議加入IT歡樂群及各分類技術(shù)群!261358889群號(hào)
關(guān)于技術(shù)快速集訓(xùn)營:建議參與我們的數(shù)據(jù)庫大會(huì)、架構(gòu)師大會(huì)、IT精英論壇!

最新消息:架構(gòu)師大會(huì)將于2015年10月22日盛大開幕!
購票入口:http://sacc.it168.com/




以下內(nèi)容產(chǎn)生于6252247-2311   IT歡樂群之分類技術(shù)QQ群!在此感謝,回答與提問者的精進(jìn),技術(shù)生活雖平淡,卻因有你們的無私與勤懇而更精彩!

問:若客服端在一定時(shí)間內(nèi)沒向服務(wù)器端發(fā)送消息,就將此客服端從服務(wù)器例表刪除,就是心跳包要怎么處理?

答:比如你可以客戶端每隔20秒向服務(wù)器端發(fā)送一個(gè)http格式的心跳包

問:我是從鍵盤獲取。用fgets()

答:思路明確沒?現(xiàn)在卡在哪?

問:我該如何判斷fgets(buff, N, stdin);在一點(diǎn)時(shí)間內(nèi)是沒有輸入的?只要判斷它在一點(diǎn)時(shí)間內(nèi)沒有輸入就讓服務(wù)器對(duì)其做下線處理

答:(1)能不能加信號(hào),鍵盤輸入應(yīng)該會(huì)出發(fā)信號(hào)。
      (2)可以寫個(gè)倒計(jì)時(shí)啥的時(shí)間結(jié)束還沒收到就讓其下線。


問:我想到過用select,但是服務(wù)器端要接收多個(gè)客戶端的消息并處理啊,我服務(wù)器端使用鏈表實(shí)現(xiàn)客戶端用戶存儲(chǔ)的,所以I/O多用復(fù)用又不好整了。

答:你應(yīng)該換個(gè)思路。

問:您說該怎么換思路,求指教

答:最好定期發(fā)給服務(wù)端發(fā)一個(gè)消息,就是心跳,服務(wù)端收不到就刪除對(duì)應(yīng)的用戶節(jié)點(diǎn)。


問:嗯 ,那這個(gè)心跳包和鍵盤的輸入怎么平衡呢?

答:(1)不影響的,在心跳之內(nèi)還沒發(fā)就下線啊
      (2)心跳要有固定格式,發(fā)過去服務(wù)器端解析出,只要格式正確就保持在線。


問:定義一個(gè)結(jié)構(gòu)體?

答:(1)對(duì)自己約定一個(gè)格式就好=哪怕是一個(gè)字符
      (2)不是就是一個(gè)字符串就行,加關(guān)鍵字。這樣做還有一個(gè)好處,比如客戶端完成任務(wù)后可以向服務(wù)器端發(fā)請(qǐng)求下線,服務(wù)器端只要做消息處理就行。


問:那請(qǐng)問在服務(wù)器端該怎么在鏈表里去處理呢?就像我有寫客戶端發(fā)送quit,客戶端就下線 ,服務(wù)器端就刪除該用戶


答:你一個(gè)連標(biāo)節(jié)點(diǎn)就是一個(gè)用戶對(duì)吧。


問:是

答:那個(gè)節(jié)點(diǎn)發(fā)的消息就處理哪個(gè)節(jié)點(diǎn)。
問:每個(gè)節(jié)點(diǎn) 一個(gè)用戶?

答:嗯,對(duì),就那樣。理解了嗎?


問:再請(qǐng)教一個(gè)較基礎(chǔ)的問題,請(qǐng)問在客戶端那個(gè)定時(shí)該怎么做,用sleep睡眠?


答:就是一個(gè)while循環(huán),每隔多少秒不停發(fā)心跳。最好用一個(gè)計(jì)算時(shí)間查的小算法。還有為了保證數(shù)據(jù)的安全或準(zhǔn)確行最好發(fā)送消息時(shí)用協(xié)議包裝 這個(gè)你先慢慢來。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2015-07-02 11:34 |只看該作者
占樓lollol

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2015-07-02 17:37 |只看該作者
  來頂

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大;照
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
4 [報(bào)告]
發(fā)表于 2015-07-06 13:06 |只看該作者
標(biāo)題的“客服端”應(yīng)該改“客戶端”

論壇徽章:
7
天蝎座
日期:2014-06-04 13:29:02子鼠
日期:2014-06-16 10:07:08IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-06-06 22:20:002015亞冠之迪拜阿赫利
日期:2015-06-08 15:24:21IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之阿爾沙巴布
日期:2015-06-18 16:37:30IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00
5 [報(bào)告]
發(fā)表于 2015-07-06 14:28 |只看該作者
好滴

論壇徽章:
17
處女座
日期:2013-08-27 09:59:352015亞冠之柏太陽神
日期:2015-07-30 10:16:402015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-07-29 18:58:182015年亞洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥豬
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56雙子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
6 [報(bào)告]
發(fā)表于 2015-07-06 18:44 |只看該作者
不錯(cuò)不錯(cuò),可以定期更新top questions,

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
7 [報(bào)告]
發(fā)表于 2015-07-11 16:48 |只看該作者
本帖最后由 yulihua49 于 2015-07-11 19:18 編輯
小尾巴魚 發(fā)表于 2015-07-02 11:12
背景:如果您有棘手的技術(shù)問題,您會(huì)選擇什么方式解決?百度一下搜索網(wǎng)絡(luò)答案?還是找一位高手求問!高手可 ...答:就是一個(gè)while循環(huán),每隔多少秒不停發(fā)心跳。最好用一個(gè)計(jì)算時(shí)間查的小算法。還有為了保證數(shù)據(jù)的安全或準(zhǔn)確行最好發(fā)送消息時(shí)用協(xié)議包裝 這個(gè)你先慢慢來。

沒這么簡單。
你必須保證心跳不干擾正常通信。做業(yè)務(wù)時(shí)心跳必須停。
心跳等待應(yīng)答期間業(yè)務(wù)要等待心跳完成。
我更傾向不用心跳。不用時(shí)關(guān)閉連接,使用時(shí)打開。這個(gè)工作可以交給連接池處理。
應(yīng)用對(duì)連接池的調(diào)用就是取用和歸還。取用時(shí)發(fā)現(xiàn)連接失效可以重連。連接池發(fā)現(xiàn)連接長時(shí)間不用可以自動(dòng)關(guān)閉。
如果應(yīng)用使用頻繁,那它本身就是心跳。如果使用不頻繁,那就沒必要老開著連接。

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
8 [報(bào)告]
發(fā)表于 2015-07-11 19:23 |只看該作者
本帖最后由 yulihua49 于 2015-07-11 19:25 編輯
小尾巴魚 發(fā)表于 2015-07-02 11:12
背景:如果您有棘手的技術(shù)問題,您會(huì)選擇什么方式解決?百度一下搜索網(wǎng)絡(luò)答案?還是找一位高手求問!高手可 ...問:若客服端在一定時(shí)間內(nèi)沒向服務(wù)器端發(fā)送消息,就將此客服端從服務(wù)器例表刪除,就是心跳包要怎么處理?

答:比如你可以客戶端每隔20秒向服務(wù)器端發(fā)送一個(gè)http格式的心跳包

答非所問。人家問客戶的沒發(fā)信息怎么處理。
正確答案是利用超時(shí)機(jī)制發(fā)現(xiàn)客戶端超時(shí)。
一般可以用TCP超時(shí),setsocketopt。 有的系統(tǒng)不支持。epoll和select也不支持,就需要自己設(shè)置超時(shí)監(jiān)控子系統(tǒng),通常單獨(dú)用個(gè)線程。
它監(jiān)控每一個(gè)連接的狀態(tài),發(fā)現(xiàn)哪個(gè)超時(shí)就發(fā)通知把它從等待隊(duì)列清除,并進(jìn)行善后工作。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2015-07-20 16:07 |只看該作者
yulihua49 發(fā)表于 2015-07-11 16:48
沒這么簡單。
。。。。。。
取用時(shí)發(fā)現(xiàn)連接失效可以重連
。。。。。。
..

連接失效是個(gè)什么狀態(tài)?
如何重連對(duì)方,對(duì)方又沒有l(wèi)isten?

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
10 [報(bào)告]
發(fā)表于 2015-07-23 15:23 |只看該作者
本帖最后由 yulihua49 于 2015-07-31 19:40 編輯

要看連接池的狀態(tài)。如果初始狀態(tài)(一切連接均無效),就產(chǎn)生新連接。這自然知道是否成功。長時(shí)間不用的連接被強(qiáng)制恢復(fù)成初始態(tài)。結(jié)果同上。使用中的連接,發(fā)現(xiàn)故障(發(fā)送或接收錯(cuò)誤),需要自行夭折你的后續(xù)操作。當(dāng)前的故障連接要?dú)w還并關(guān)閉。這個(gè)連接自然恢復(fù)到初始態(tài)。一般的連接故障不可能很快恢復(fù),所以沒必要自動(dòng)重連。業(yè)務(wù)的rollback,redo,abort等操作你自己設(shè)計(jì)
連接池是個(gè)客戶端的裝置。服務(wù)器不是這樣的,它只需要超時(shí)關(guān)閉客戶端連接即可,我們一般設(shè)置服務(wù)器超時(shí)6分鐘,客戶端(連接池)超時(shí)5分鐘。這樣總是保證客戶端搶先關(guān)閉。應(yīng)用不會(huì)出任何問題。如果客戶端一直繁忙,服務(wù)器也不會(huì)探測到超時(shí)。雙方的超時(shí)都是在發(fā)生真正的網(wǎng)絡(luò)故障。
把我的回帖完整看一遍就可以理解了。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP