[發明專利]一種基于socket的網絡通信方法、裝置及系統有效
| 申請號: | 201110385444.8 | 申請日: | 2011-11-28 |
| 公開(公告)號: | CN103139157A | 公開(公告)日: | 2013-06-05 |
| 發明(設計)人: | 吳晶晶 | 申請(專利權)人: | 北京南車時代信息技術有限公司 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 逯長明 |
| 地址: | 100070 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 socket 網絡 通信 方法 裝置 系統 | ||
技術領域
本發明涉及網絡通信技術領域,尤其涉及一種基于socket的網絡通信方法、裝置及系統。
背景技術
在TCP/IP網絡應用中,通信的兩個進程間相互作用的主要模式是客戶/服務器模式(Client/Server?model),即客戶向服務器發出服務請求,服務器接收到請求后,提供相應的服務。套接字,是支持TCP/IP的網絡通信的基本操作單元,可以看作是不同主機之間的進程進行雙向通信的端面點,簡單的說就是通信的雙方的一種約定,用套接字中的相關函數來完成通信過程。
在利用套接字通信時要先建立套接字的連接,根據連接啟動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分為三個步驟:服務器監聽、客戶端請求、連接確認。服務器監聽是指服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態,按時監控網絡狀態;客戶端請求是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。連接確認是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器套接字繼續處于監聽狀態,繼續接收其他客戶端套接字的連接請求。
例如,應用程序a、b、c、d等分別為運行在同一網絡上的不同結點的計算機中,若應用程序a希望發送數據到應用程序b中,而應用程序b希望自己的b-1線程接收并處理該數據,假設a為服務端,b為客戶端,其實現方式如下:在a的某處建立服務端socket,在b的b-1線程處建立客戶端socket并連接;a程序調用socket發送函數,發送數據至b程序的b-1線程中的socket;b-1線程調用socket接收函數讀取數據,應用程序b對接收數據進行處理。
由上述應用程序a與b的通信過程可得知,運行在網絡上的兩個不同結點的多線程應用程序,若想建立穩定的socket連接并收發數據,且發送方希望接收方的指定線程接收數據,一般情況下,需要在發送方和接收方的指定線程編寫socket通信代碼。因此,在進行應用程序的設計時,應用程序的設計者需要關心socket程序設計的細節,包括調用socket函數來建立連接、讀取、發送、查詢網絡消息以及維護socket通信網絡等,整個網絡通信過程較為復雜。
發明內容
有鑒于此,本發明提供了一種基于socket的網絡通信方法、裝置及系統,用于解決應用程序的設計者需要考慮socket程序設計細節、整個網絡通信過程復雜的問題。
一種基于socket的網絡通信方法,該方法包括:
A:初始化過程,包括:
A1:確定與服務端具有連接關系的客戶端,分別創建與每一個客戶端對應的socket類對象,并記錄所述客戶端與其對應的socket類對象的對應關系,所述socket類對象中包含了與其對應的客戶端主機的主機名,將所述socket類對象指針存入預先建立的服務端socket鏈表;
A2:分別建立與所述服務端socket鏈表中每一個socket類對象對應的socket通信隊列,并記錄所述socket類對象與其對應的socket通信隊列的對應關系;
B:通信過程,包括:
B1:服務端監聽網絡狀態,當監聽到客戶端發送的連接請求,接收來自發送連接請求的客戶端的連接;
B2:服務端指定待接收數據客戶端的主機名、線程名和待發送的數據,服務端根據主機名確定帶發送數據客戶端對應的socket類對象,并確定與所述socket類對象對應的socket通信隊列;
B3:將所述線程名和待發送數據寫入與待接收數據的客戶端對應的socket通信隊列中;
B4:與所述socket類對象對應的socket執行程序提取所述socket通信隊列中的線程名和待發送數據,并發送給待接收數據的客戶端;
B5:所述待接收數據的客戶端接收所述服務端發送的數據,從所述數據中解析出線程名,將所述數據中去除線程名后的數據存入預先建立的所述解析出的線程名所對應的線程隊列中,客戶端的指定線程從所述線程隊列中提取數據。
所述服務端接收來自發送連接請求的客戶端的連接具體為:
判斷所述發送請求的客戶端對應的socket類對象是否存在于所述服務端socket鏈表中時,如果是,則接收來自發送連接請求的客戶端的連接;如果否,則創建socket類對象并進行綁定監聽,然后接收來自發送連接請求的客戶端的連接。
一種基于socket的網絡通信方法,該方法包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京南車時代信息技術有限公司,未經北京南車時代信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110385444.8/2.html,轉載請聲明來源鉆瓜專利網。





