成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Socket開發框架之框架設計及分析

開發
平臺通過發送平臺RSA公鑰消息向終端告知自己的RSA公鑰,終端回復終端RSA公鑰消息,反之亦然。這樣平臺和終端的消息,就可以 通過自身的私鑰加密,讓對方公鑰解密就可以了。

 

雖然在APP應用、Web應用、Winform應用等大趨勢下,越來越多的企業趨向于這些應用系統開發,但是Socket的應用在某些場合是很必要 的,如一些停車場終端設備的接入,農業或者水利、壓力監測方面的設備數據采集等,以及常見的IM(即時通訊,如騰訊QQ、阿里旺旺等)的客戶端,都可以采 用Socket框架進行相關的數據采集和信息通訊用途的,Socket應用可以做為APP應用、Web應用和Winform應用的補充。

1、Socket應用場景

一般情況下,客戶端和服務端進行Socket連接,需要進行數據的交換,也就是后臺提供數據查詢或者寫入的相關操作,它們的應用場景也是在后臺有一個應用數據庫支持的,如下所示。

 

Socket服務器和客戶端的通訊原理如下所示,客戶端通過服務器地址和端口發起Socket連接,服務器在接收到Socket客戶端的請求后,開辟一個新的Socket連接進行通訊管理,兩方基于Socket協議進行數據的交互處理。

 

2、Socket框架設計思路

Socket開發是屬于通信底層的開發,.NET本身也提供了非常豐富的類來實現Socket的開發工作,Socket框架應針對這些基礎功能進行了很好的封裝處理,已達到統一、高效的使用。

要掌握或者了解Socket開發,必須了解下面所述的場景及知識。

  • TCP客戶端,連接服務器端,進行數據通信

  • TCP服務器端,負責偵聽客戶端連接

  • 連接客戶端的管理,如登陸,注銷等,使用獨立線程處理

  • 數據接收管理,負責數據的接受,并處理隊列的分發,使用獨立線程處理,簡單處理后叫給“數據處理線程”

  • 數據處理線程,對特定的數據,采用獨立的線程進行數據處理

  • 數據的封包和解包,按照一定的協議進行數據的封裝和解包

針對以上內容,可以封裝以下功能的操作類作為共用基類:

  • BaseSocketClient,客戶端基類,負責客戶端的鏈接、斷開、發送、接收等操作。

  • BaseSocketServer,TCP服務器管理基類,負責在獨立的線程中偵聽指定的端口,如果有客戶端連接進來,則進行相應的處理。

  • BaseClientManager,連接客戶端管理類,該類主要負責客戶端登錄超時處理,連接上來的客戶端維護,經過登陸驗證的客戶端維護,客戶端登陸驗證接口,客戶端發送數據處理等功能。

  • BaseReceiver,數據接收處理類,該基類是所有接受數據的處理類,負責維護數據的隊列關系,并進一步進行處理。

  • ThreadHandler,數據獨立線程處理類,對每個不同類型的數據(不同的協議類型),可以用獨立的線程進行處理,這里封裝了一個基類,用于進行數據獨立線程的處理。

1)Socket客戶端基類

我們知道Socket通訊,分為了客戶端和服務端,它們各自處理的事情是有所不同的,因此為了實現更好的代碼重用,我們在這個基礎上進行了不同的封 裝。針對Socket客戶端類,我們主要需要提供基礎的Socket連接及斷開、接收及發送、封包拆包等常規操作過程,因此我們封裝了一個客戶端基類 BaseSocketClient。

但是為了基于不同的應用客戶端,實現不同的業務溝通,我們可以在服務端接收處理不同的客戶端,因此也就是需要對Socket客戶端進行派生擴展,例如本框架增加了一個中心的Socket客戶端、分店的Socket客戶端、還有一個橋接的連接客戶端(可實現轉發數據功能)。

 

2)Socket服務端基類

相對于Socket客戶端基類,同樣我們也創建一個Socket服務端基類,通過繼承的方式,我們可以用于簡化代碼的重復性。該服務端基類稱為 TCP服務器管理基類 BaseSocketServer,負責在獨立的線程中偵聽指定的端口,如果有客戶端連接進來,則進行相應的處理。

同樣我們也派生了兩個服務端的基類,方便對不同的Socket客戶端進行差異性處理,如對應上面的中心客戶端類ClientOfCall,我們增加一個對應的服務端類ServerForCall,其他的也類似,它們的繼承關系如下所示。

 

另外,由于我們允許不同的Socket客戶端類(如ClientOfCall、ClientOfShop)的接入,那么在服務器端也會有對應 Socket服務端類(ServerForCall、ServerForShop)進行不同端口的偵聽,一旦在自己所屬端口有Socket接入,那么服務 端類會分派給不同Socket客戶端管理類來處理他們的關系和數據,這樣也就進一步引入一個客戶端管理類的概念,它對應不同的Socket客戶端。

這里也根據需要定義了一個Socket客戶端管理基類BaseClientManager<T>,這個T代 表對應不同的客戶端,這樣我們就可以派生出CallClientManager和ShopClientManager兩個不同的客戶端管理類了,它們的繼 承關系如下所示。

 

3)數據接收處理基類

在不同的Socket客戶端連接到服務端后,服務端開辟一個新的線程進行對應的Socket數據通訊,那么數據通訊這里面的管理,我們可以為不同的Socket客戶端訂做一個對應的數據接收處理類,專門針對特定的Socket客戶端連接的數據進行處理。

這里也根據需要定義了一個數據接收的基類BaseReceiver,同樣我們派生對應不同客戶端的數據接收類ReceivedForCall、ReceivedForShop和ReceivedForBridge等幾個具體的數據處理類,它們的繼承關系如下所示。

 

3、框架界面設計

1)參數配置

Socket服務器需要一些參數來確定偵聽的IP地址、端口,以及數據庫的連接信息,各種數據的處理時間間隔等參數,因此需要提供一個較好的管理界面來進行管理,本框架使用基于本地配置文件的參數管理方式進行管理,參數界面如下所示。

 

客戶端也同樣需要配置一些參數,用來確定連接的服務器IP及端口信息,如下配置界面所示。

 

Socket服務器監控界面,需要顯示一些基礎的狀態和Socket連接等基礎信息,作為我們對整體狀態的了解,同時這些信息可以記錄到日志里面供我們進行查閱和分析。

 

除了上面總體的設計外,其中還有一個地方需要細致的展開來介紹,就是對Socket傳輸消息的封裝和拆包,一般的Socket應用,多數采用基于順 序位置和字節長度的方式來確定相關的內容,這些處理對我們分析復雜的協議內容,簡直是一場災難,協議位置一旦變化或者需要特殊的處理,就是很容易出錯的, 而且大多數代碼充斥著很多位置的數值變量,分析和理解都是非常不便的。

如果對于整體的內容,使用一種比較靈活的消息格式,如JSON格式,那么我們可以很好的把消息封裝和消息拆包解析兩個部分,交給第三方的JSON解 析器來進行,我們只需要關注具體的消息處理邏輯就可以了,而且對于協議的擴展,就如JSON一樣,可以自由靈活,這樣瞬間,整個世界都會很清靜了。由于篇 幅的原因,我將在下一個隨筆在進行介紹JSON格式的消息處理過程。

除了上面的場景外,我們還需要考慮用戶消息的加密和校驗等內容處理,這樣才能達到安全、完整的消息處理,我們可以采用 RSA公鑰密碼系統。平臺通過發送平臺RSA公鑰消息向終端告知自己的RSA公鑰,終端回復終端RSA公鑰消息,反之亦然。這樣平臺和終端的消息,就可以 通過自身的私鑰加密,讓對方公鑰解密就可以了。

責任編輯:王雪燕 來源: 伍華聰博客
相關推薦

2010-09-25 13:09:39

UISymbian

2012-06-25 12:43:26

.NET框架

2021-12-29 10:38:35

運維框架KubeNest

2012-06-25 09:28:42

.NET可逆框架

2009-09-08 09:12:12

LINQ構建框架設計

2020-07-30 10:35:32

Java反射框架設計

2012-01-18 10:20:42

框架設計

2012-01-10 10:04:43

Node.js

2022-09-15 18:32:13

SPI模型框架

2021-02-23 08:18:04

Java 反射機制

2011-04-22 09:26:57

MVC設計

2022-06-15 11:01:59

自定義SPIJava

2022-10-10 09:11:12

互聯網存儲系統云計算

2017-04-12 23:33:38

DevOps平衡計分卡框架

2022-09-25 21:45:54

日志平臺

2009-06-18 12:06:30

Java Web開發框

2013-04-23 09:31:12

Winform開發框架

2014-09-23 10:05:55

2022-04-03 15:44:55

Vue.js框架設計設計與實現

2012-09-06 10:07:26

jQuery
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线 | 男女羞羞视频在线 | 成人国产精品久久 | 国外成人在线视频 | 国产精品久久久久久久久久妇女 | 亚洲不卡在线视频 | av一区二区三区 | 久久成人人人人精品欧 | 中文一区 | 国产一区影院 | 黄色三级免费 | 黄色大片免费网站 | 欧洲一级黄 | 仙人掌旅馆在线观看 | 天天操夜夜操 | 欧美成人一区二区 | 中文字幕日韩在线观看 | 在线中文字幕视频 | chinese中国真实乱对白 | 超碰人人91 | 亚洲一区久久 | 亚洲精品美女在线观看 | 91视频在线| 日韩在线国产精品 | 久久久久久久久久久久久91 | 在线免费观看黄色 | 国产成人综合亚洲欧美94在线 | 自拍偷拍亚洲欧美 | 国产精品免费大片 | 精品一区国产 | 色欧美综合 | caoporn免费在线视频 | www.亚洲一区二区三区 | 日韩一区二区福利 | 亚洲精品性视频 | 国产丝袜一区二区三区免费视频 | 色一级片 | av一级久久| 国产999精品久久久 日本视频一区二区三区 | 久久久久久久久久久久亚洲 | 在线观看视频一区二区三区 |