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

  免費注冊 查看新帖 |

Chinaunix

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

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

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

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

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




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

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

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

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

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

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

答:(1)能不能加信號,鍵盤輸入應該會出發(fā)信號。
      (2)可以寫個倒計時啥的時間結(jié)束還沒收到就讓其下線。


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

答:你應該換個思路。

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

答:最好定期發(fā)給服務端發(fā)一個消息,就是心跳,服務端收不到就刪除對應的用戶節(jié)點。


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

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


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

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


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


答:你一個連標節(jié)點就是一個用戶對吧。


問:是

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

答:嗯,對,就那樣。理解了嗎?


問:再請教一個較基礎的問題,請問在客戶端那個定時該怎么做,用sleep睡眠?


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

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

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

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀念徽章
日期: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 [報告]
發(fā)表于 2015-07-06 13:06 |只看該作者
標題的“客服端”應該改“客戶端”

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

論壇徽章:
17
處女座
日期:2013-08-27 09:59:352015亞冠之柏太陽神
日期:2015-07-30 10:16:402015亞冠之薩濟拖拉機
日期: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 [報告]
發(fā)表于 2015-07-06 18:44 |只看該作者
不錯不錯,可以定期更新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年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發(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 [報告]
發(fā)表于 2015-07-11 16:48 |只看該作者
本帖最后由 yulihua49 于 2015-07-11 19:18 編輯
小尾巴魚 發(fā)表于 2015-07-02 11:12
背景:如果您有棘手的技術問題,您會選擇什么方式解決?百度一下搜索網(wǎng)絡答案?還是找一位高手求問!高手可 ...答:就是一個while循環(huán),每隔多少秒不停發(fā)心跳。最好用一個計算時間查的小算法。還有為了保證數(shù)據(jù)的安全或準確行最好發(fā)送消息時用協(xié)議包裝 這個你先慢慢來。

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

論壇徽章:
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年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發(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 [報告]
發(fā)表于 2015-07-11 19:23 |只看該作者
本帖最后由 yulihua49 于 2015-07-11 19:25 編輯
小尾巴魚 發(fā)表于 2015-07-02 11:12
背景:如果您有棘手的技術問題,您會選擇什么方式解決?百度一下搜索網(wǎng)絡答案?還是找一位高手求問!高手可 ...問:若客服端在一定時間內(nèi)沒向服務器端發(fā)送消息,就將此客服端從服務器例表刪除,就是心跳包要怎么處理?

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

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

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

連接失效是個什么狀態(tài)?
如何重連對方,對方又沒有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年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發(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 [報告]
發(fā)表于 2015-07-23 15:23 |只看該作者
本帖最后由 yulihua49 于 2015-07-31 19:40 編輯

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

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP