[發明專利]一種基于TCP長連接的服務實現方法和裝置有效
| 申請號: | 201610230675.4 | 申請日: | 2016-04-14 |
| 公開(公告)號: | CN105763634B | 公開(公告)日: | 2019-01-04 |
| 發明(設計)人: | 張厚瑞 | 申請(專利權)人: | 北京思特奇信息技術股份有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;G06F9/54 |
| 代理公司: | 北京輕創知識產權代理有限公司 11212 | 代理人: | 楊立 |
| 地址: | 100086 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 tcp 連接 服務 實現 方法 裝置 | ||
1.一種基于TCP長連接的服務實現方法,其特征在于,包括:
步驟S1,主進程從配置文件中獲取監聽端口,通過綁定方法綁定主機網絡協議IP和所述監聽端口,并建立監聽;
步驟S2,所述主進程接收客戶端發送的連接請求,并判斷連接請求數是否超過預設的連接數閾值;
步驟S3,如果所述連接請求數在所述預設的連接數閾值范圍內,則所述主進程創建通訊子進程,并對所述通訊子進程進行初始化;
步驟S4,通過異步輪詢機制處理文件描述符集合,并通過通訊管道數組異步調度業務子進程。
2.根據權利要求1所述的一種基于TCP長連接的服務實現方法,其特征在于,所述步驟S3包括:
步驟S31,創建子進程管理區共享內存塊、通訊管道數組和所述業務子進程,其中,所述通訊管道數組包括業務請求通訊管道和業務應答通訊管道;
步驟S32,將所述業務子進程的信息、所述業務子進程的編號、管道信息和所述業務子進程的狀態寫入所述子進程管理區共享內存塊;
步驟S33,調用系統函數啟動所述業務子進程,并將套接字標識符ID、管道編號作為入參傳入所述業務子進程。
3.根據權利要求1所述的一種基于TCP長連接的服務實現方法,其特征在于,所述步驟S4包括,重復執行步驟S41至步驟S47:
步驟S41,將所述通訊子進程加入超時信號處理函數;
步驟S42,初始化文件描述符集合,將套接字ID加入所述文件描述符集合;
步驟S43,遍歷所述子進程管理區共享內存塊,并判斷所述業務子進程的運行狀態;
步驟S44,如果所述業務子進程的運行狀態為忙碌狀態,則將所述業務應答通訊管道加入所述文件描述符集合;
步驟S45,通過異步輪詢函數遍歷所述文件描述符集合,并檢測所述文件描述符集合的狀態變化;
步驟S46,如果所述套接字ID發生變化,則所述通訊子進程調用套接字接收函數接收請求報文,并判斷所述請求報文的報文類型;
步驟S47,如果所述業務應答通訊管道發生變化,則所述通訊子進程調用所述套接字接收函數接收所述業務應答通訊管道的應答內容,并將所述應答內容通過寫函數返回給所述客戶端。
4.根據權利要求3所述的一種基于TCP長連接的服務實現方法,其特征在于,所述步驟S46包括:
步驟S461,如果所述報文類型為訪問控制類型,則所述通訊子進程根據所述訪問控制類型調用不同的處理函數;
步驟S462,如果所述報文類型為業務報文類型,則所述通訊子進程將業務請求通過業務請求通訊管道寫入業務子進程通訊管道,以使得所述業務子進程進行業務邏輯處理。
5.根據權利要求4所述的一種基于TCP長連接的服務實現方法,其特征在于,所述步驟S462包括,重復執行步驟S4622至步驟S4628:
步驟S4621,建立共享內存,將業務報文模板加載到所述共享內存中;
步驟S4622,監聽所述業務子進程中業務請求通訊管道的變化;
步驟S4623,如果所述業務請求通訊管道發生變化,則讀取所述業務請求通訊管道的數據;
步驟S4624,如果讀取超時,則修改所述子進程管理區共享內存塊,將所述業務子進程的運行狀態設置為忙碌狀態;
步驟S4625,根據業務關鍵字匹配所述業務報文模板得到業務報文字段,將所述業務報文字段構成鍵值對;
步驟S4626,調用業務處理進程獲取業務處理結果信息;
步驟S4627,將所述業務處理結果信息寫入所述業務應答通訊管道;
步驟S4628,修改所述子進程管理區共享內存塊,并將所述業務子進程的運行狀態設置為空閑狀態。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京思特奇信息技術股份有限公司,未經北京思特奇信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610230675.4/1.html,轉載請聲明來源鉆瓜專利網。





