一種基于Socket連接的多通道雙工通訊方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于通訊技術(shù)領(lǐng)域,具體涉及一種基于Socket連接的多通道雙工通訊方法。
【背景技術(shù)】
[0002]現(xiàn)階段,服務(wù)器端和客戶端之間的Socket連接建立過程為:
[0003](I)服務(wù)器端偵聽某一端口,等待客戶端的Socket連接請求;
[0004](2)客戶端向服務(wù)器端發(fā)送Socket連接請求,其中,該Socket連接請求攜帶有客戶端的地址和端口號;
[0005](3)當(dāng)服務(wù)器端監(jiān)聽到客戶端所發(fā)送的連接請求時,服務(wù)器端創(chuàng)建一個新的線程,通過線程管理服務(wù)器端和客戶端正式建立的Socket連接,服務(wù)器端在建立Socket連接后,客戶端與服務(wù)器端即可進(jìn)行基于TCP/IP的通訊。
[0006]然而,在Socket通訊類軟件研發(fā)的過程中,需要頻繁的針對Socket連接進(jìn)行創(chuàng)建、使用、銷毀等操作;而每建立一個Socket連接,服務(wù)器端均需要啟動一個線程,對該Socket連接進(jìn)行管理,由此導(dǎo)致Socket連接的管理效率低下,占用了服務(wù)器端大量的CPU和內(nèi)存等資源。
【發(fā)明內(nèi)容】
[0007]針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種基于Socket連接的多通道雙工通訊方法,可有效解決上述問題。
[0008]本發(fā)明采用的技術(shù)方案如下:
[0009]本發(fā)明提供一種基于Socket連接的多通道雙工通訊方法,包括以下步驟:
[0010]步驟1:分別創(chuàng)建適配器、服務(wù)器端Socket容器和客戶端Socket容器;所述適配器分別與所述服務(wù)器端Socket容器和所述客戶端Socket容器連接;
[0011]其中,所述適配器用于記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系;
[0012]所述服務(wù)器端Socket容器用于存儲已被所述適配器記錄匹配關(guān)系的服務(wù)器端套接字,其中,所述服務(wù)器端套接字包含所述服務(wù)器端地址;
[0013]所述客戶端Socket容器用于存儲已被所述適配器記錄匹配關(guān)系的客戶端套接字,其中,所述客戶端套接字包含所述客戶端地址;
[0014]步驟2,每當(dāng)所述適配器已記錄服務(wù)器端地址和客戶端地址的匹配關(guān)系之后,在已建立匹配關(guān)系的服務(wù)器端創(chuàng)建服務(wù)器端發(fā)送隊列和服務(wù)器接收隊列;
[0015]在已建立匹配關(guān)系的客戶端創(chuàng)建客戶端發(fā)送隊列和客戶端接收隊列;
[0016]步驟3,所述適配器對所述服務(wù)器端發(fā)送隊列和所述客戶端發(fā)送隊列進(jìn)行監(jiān)聽,每當(dāng)監(jiān)聽到所述客戶端發(fā)送隊列中存在所述客戶端添加的待發(fā)送客戶端消息時,執(zhí)行步驟4 ;每當(dāng)監(jiān)聽到所述服務(wù)器端發(fā)送隊列中存在所述服務(wù)器端添加的待發(fā)送服務(wù)器端消息時,執(zhí)行步驟5 ;
[0017]步驟4,所述適配器對所述待發(fā)送客戶端消息進(jìn)行解析,提取到該待發(fā)送客戶端消息所攜帶的客戶端地址和服務(wù)器端地址;
[0018]然后,所述適配器判斷提取到的客戶端地址和服務(wù)器端地址是否已建立匹配關(guān)系,如果沒有,則結(jié)束流程;如果有,則所述適配器對所述服務(wù)器端Socket容器進(jìn)行查找,得到與本次匹配關(guān)系對應(yīng)的服務(wù)器端套接字;所述服務(wù)器端套接字將待發(fā)送客戶端消息發(fā)送到對應(yīng)的服務(wù)器端接收隊列,使對應(yīng)的服務(wù)器端通過讀取自身的服務(wù)器端接收隊列,接收到來自客戶端的消息;
[0019]步驟5,所述適配器對所述待發(fā)送服務(wù)器端消息進(jìn)行解析,提取到該待發(fā)送服務(wù)器端消息所攜帶的客戶端地址和服務(wù)器端地址;
[0020]然后,所述適配器判斷提取到的客戶端地址和服務(wù)器端地址是否已建立匹配關(guān)系,如果沒有,則結(jié)束流程;如果有,則所述適配器對所述客戶端Socket容器進(jìn)行查找,得到與本次匹配關(guān)系對應(yīng)的客戶端套接字;所述客戶端套接字將待發(fā)送服務(wù)器端消息發(fā)送到對應(yīng)的客戶端接收隊列,使對應(yīng)的客戶端通過讀取自身的客戶端接收隊列,接收到來自服務(wù)器端的消息。
[0021]優(yōu)選的,步驟I中,所述適配器用于記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系,具體指:
[0022]在每臺服務(wù)器端部署唯一對應(yīng)的鏈接監(jiān)聽器,通過所述鏈接監(jiān)聽器對服務(wù)器端的地址進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到服務(wù)器端接收到來自客戶端的Socket連接建立請求時,所述鏈接監(jiān)聽器對該Socket連接建立請求進(jìn)行解析,獲得客戶端地址以及服務(wù)器端地址;
[0023]然后,所述鏈接監(jiān)聽器將所獲得的客戶端地址以及服務(wù)器端地址發(fā)送給所述適配器;
[0024]所述適配器記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系。
[0025]優(yōu)選的,所述客戶端地址指客戶端IP地址和/或端口號;所述服務(wù)器端地址指服務(wù)器端IP地址和/或端口號。
[0026]優(yōu)選的,還包括:
[0027]創(chuàng)建Socket清理器;所述Socket清理器輪詢所述服務(wù)器端Socket容器和所述客戶端Socket容器,將所述服務(wù)器端Socket容器和所述客戶端Socket容器中生命周期已超期的Socket連接所對應(yīng)的套接字刪除。
[0028]本發(fā)明的有益效果如下:
[0029]本發(fā)明提供的基于Socket連接的多通道雙工通訊方法具有以下優(yōu)點(diǎn):
[0030]通過簡單的方式即可實(shí)現(xiàn)服務(wù)器端和客戶端的多通道雙工通訊,具有Socket連接的管理效率高、資源占用量少的優(yōu)點(diǎn)。
【附圖說明】
[0031]圖1為本發(fā)明提供的基于Socket連接的多通道雙工通訊方法的流程示意圖。
【具體實(shí)施方式】
[0032]以下結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明:
[0033]結(jié)合圖1,本發(fā)明提供一種基于Socket連接的多通道雙工通訊方法,包括以下步驟:
[0034]步驟1:分別創(chuàng)建適配器、服務(wù)器端Socket容器和客戶端Socket容器;適配器分別與服務(wù)器端Socket容器和客戶端Socket容器連接。
[0035](I)適配器
[0036]適配器用于記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系。
[0037]在具體實(shí)現(xiàn)上,適配器可采用以下方式記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系:
[0038]在每臺服務(wù)器端部署唯一對應(yīng)的鏈接監(jiān)聽器,通過鏈接監(jiān)聽器對服務(wù)器端的地址進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到服務(wù)器端接收到來自客戶端的Socket連接建立請求時,鏈接監(jiān)聽器對該Socket連接建立請求進(jìn)行解析,獲得客戶端地址以及服務(wù)器端地址;
[0039]然后,鏈接監(jiān)聽器將所獲得的客戶端地址以及服務(wù)器端地址發(fā)送給適配器;
[0040]適配器記錄需建立Socket連接的服務(wù)器端地址和客戶端地址的匹配關(guān)系。
[0041](2)服務(wù)器端Socket容器和客戶端Socket容器
[0042]服務(wù)器端Socket容器用于存儲已被適配器記錄匹配關(guān)系的服務(wù)器端套接字,其中,服務(wù)器端套接字包含服務(wù)器端地址;
[0043]客戶端Socket容器用于存儲已被適配器記錄匹配關(guān)系的客戶端套接字,其中,客戶端套接字包含客戶端地址;
[0044]本發(fā)明中,客戶端地址指客戶端IP地址和/或端口號;服務(wù)器端地址指服務(wù)器端IP地址和/或端口號。
[0045]步驟2,每當(dāng)適配器已記錄服務(wù)器端地址和客戶端地址的匹配關(guān)系之后,在已建立匹配關(guān)系的服務(wù)器端創(chuàng)建服務(wù)器端發(fā)送隊列和服務(wù)器接收隊列;
[0046]在已建立匹配關(guān)系的客戶端創(chuàng)建客戶端發(fā)送隊列和客戶端接收隊列;
[0047]步驟3,適配器對服務(wù)器端發(fā)送隊列和客戶端發(fā)送隊列進(jìn)行監(jiān)聽,每當(dāng)監(jiān)聽到