999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于Socket 的編程研究

2021-03-05 14:57:43徐洪麗楊傳棟王秀麗
科技創新導報 2021年27期
關鍵詞:網絡通信機制

徐洪麗 楊傳棟 王秀麗

摘 要:Socket是網絡通信中的常用技術,有著廣泛的應用前景和意義。本文首先給出了Socket含義,然后關注了Socket通信過程中的注意事項,Socket常用方法及多線程Socket通訊,最后研究了套接字心跳機制,設計思路及其注意事項,Socket長連接及其常用步驟,為套接字的應用提供了理論和實踐支持。

關鍵字:Socket通信 ?多線程Socket ?心跳機制 ?長連接

中文分類號:TP39文獻標識碼: A ? ? ? ? ? 文章編號

Research on Socket Programming

XU Hongli 1 ?YANG Chuandong 1 ? WANG Xiuli

(1. College of Information Science and Engineering, Shandong Agricultural University, Taian, Shandong Province, 271018China)

Abstract: Socket is a common technology in network communication and has a wide prospect and significance in application. This paper first introduces the meaning of Socket, then pays attention to the precautions in the process of Socket communication, common Socket methods and multi-threaded Socket communication, and finally studies the Socket heartbeat mechanism, design ideas and precautions, Socket long connection and common steps, which provides theoretical and practical support for the application of Socket.

Key Words: Socket communication; MultithreadingSocket; Heartbeat mechanism; Long connection

1 什么是socket

Socket直譯為“插座,燈座”,又稱為“套接字”或“套接口”,最早由加州大學伯克利分校為UNIX系統開發出來,目前是互聯網連接的標準接口[1]。它是網絡通信中應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。網絡中,兩個進程通過一個雙向的通信連接實現數據交換,這個雙向連接的一端稱為一個socket。socket遵循著“打開—讀/寫—關閉”模式,服務器和客戶端各自維護一個"文件",在建立連接打開后,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。Os會分配一個獨一無二的號給每個本地Socket,一個完整的Socket需要給出以下幾個方面的信息:協議、本地地址和遠程地址、本地端口和遠程端口。

目前,套接字分為SOCK_STREAM、SOCK_DGRAM及SOCK-ORIGINAL。需要注意的是在網絡通信中,兩個需要通訊的進程最基本的一個前提是能夠唯一的標志進程,在本地進程通訊中使用PID來唯一標示一個進程,但PID只在本地唯一,網絡中的兩個進程PID沖突幾率很大。需要其他的輔助標注信息。由于網絡中IP層的IP地址可以唯一標示主機,而TCP層協議和端口號可以唯一標示主機的一個進程,因此利用“IP地址+協議+端口號”能夠唯一標示網絡中的一個進程。另外,還提供心跳機制來判斷網絡連接是否類實時有效。能夠唯一標示網絡中的進程后,它們就可以利用Socket進行通信了,常用的有多線程Socket通訊和心跳機制。

2 Socket常用方法和多線程Socket編程

2.1 Socket 常用方法:

在.net中與socket編程有關的命名空間有System::Net,她為當前網絡中使用的多種協議提供了簡單的變成接口。System::Net:Sockets命名空間提供了需要嚴格掌控網絡通信的編程接口。常用的相關類:IPAddress類:包含一個IP地址。IPEndPoint類:包含了一對IP地址和端口號。常用方法:Socket()方法創建一個Socket。Bind():綁定一個本地的IP和端口號。Listen():讓Socket偵聽傳入的連接嘗試。Connect()初始化與另一個Socket的連接。Accept():接收連接并返回一個新的Socket。Send():輸出數據到Socket。Receive():從Socket中讀取數據。Close():關閉Socket,銷毀連接。

2.1多線程socket編程

對于同一個程序,它又可以分成若干個獨立的執行流,即線程,線程提供了多任務處理的能力。利用多線程Socket編程可以在局域網內實現多個IP的信息通信[2]。此時,服務器端接收所有局域網內客戶端發來的信息,并將此信息轉發給其他所有的客戶端。采用多線程實現局域網內每個在線客戶端的信息監聽。客戶端接收服務器發來的信息,或發送信息給服務器,再有服務器轉發給其他在線客戶端。具體實現時,多線程socket常使用createthread創建n個線程,然后每個線程體創建使用單獨的socket。關于多線程編程,涉及的內容很多,如線程間的通訊、線程間的同步等,注意事項如下。(1)與N個客戶端相連的話;服務器都有一個對應的socket;也就是N個。(2)TCP的C/S應用中,server端程序要先于client端程序執行,原因是客戶端要連接服務器之前需要獲得服務器的IP地址和端口號,這兩個信息是出于監聽狀態的,如果服務器不先啟動,也不可能綁定這個端口號,因此客戶端根本連接不上。(3)各個線程可以訪問進程中的公共變量,需要做數據保護,以免損壞數據。保證各個線程在一起適當協調工作稱為線程之間的同步。即要處理數據的并發控制和同步問題[3]。Visual C++提供多線程同步類:同步對象(CsyncObject、Csemaphore、Cmutex、CcriticalSection和Cevent)和同步訪問對象(CmultiLock和CsingleLock),保證程序運行安全性和數據有效性。

3 套接字心跳機制和長連接

3.1 心跳機制設計思路

網絡通信,當客戶端連接服務器,服務器會維持一個跟客戶端相關的Socket。心跳包是為了服務器和客戶端獲知對方是否處于在線狀態的數據包,一般按照設定的時間間隔發送,像心跳,因此稱為心跳包[4]。為節省服務器端資源,客戶端停止程序之前,會發“停止”通知到服務器端,以便釋放相應內存資源。但由于網絡環境的復雜,會出現客戶端已中斷,服務器端還未獲知的情況,如病毒、防火墻、未知的網絡故障等,因此采用心跳機制判斷服務器和客戶端否掉線,之所以不直接判斷Socket內容,是因為網絡上有很多緩存設備,緩存的時間不等(從幾秒到幾分鐘不等),不易直接采用[5]。

需要注意的是,TCP協議中的SO_KEEPALIVE選項,可以設置心跳頻率,默認為2h,如果通過此選項更改心跳頻率,則約束所有的網絡通信。因此,通常在應用層項目的應用程序中編寫“心跳包”來完成此功能,設計思想如下。(1)客戶端每隔一定時間間隔(如30s)發送心跳包給服務器端,并累加計數1次,服務器收到心跳包后把信息返回給客戶端。(2)若服務器將心跳信息正常發回,則客戶端計數清零。(3)發生網絡不暢時,要么規定時間內(如30s)客戶端收不到服務器端發回的消息,則客戶端關閉相應的連接;要么服務器端檢查所有的連接商定時間內是否收到心跳包,若無則說明客戶端出現問題,關閉相應的socket。(4)如必要,可以自定義structure為心跳包或心跳幀,使對方獲悉本方的online狀態,以延續連接的有效性。其內容有些無關緊要,可以很小,甚至可以是一個空包,僅僅包含包頭部分。

3.2Socket長連接

Socket長連接建立在心跳機制之上,即建立長連接一般需要設置心跳機制做其Prepare工作,長連接的保活(KeepAlive)性需要應用層的心跳機制的保證[6]。長連接是相對短連而言,根據通信時發送的數據包多少和連接保持的在線長短及連接數等確定。一般用于操作多,保持在線時間長的情況。比如數據庫的連接一般使用長連接更高效,因為每次TCP的連接都需要按照流程中的三步走執行,對數據庫進行頻繁的連接會降低效率并增加網絡通信的占用時間,浪費通信資源的同時大大拉低數據庫的工作速度,數據庫連接一般是長連接,第一個數據包傳送后,連接不斷開,接著進行后續包的傳遞。

TCP連接保持期間,需要注意無內容傳送時,為延續此連接,兩方需要有檢測包(心跳包)的通信。即通常情況下長連接的步驟為“connection→data transmission→keep connection(Transmit heartbeat package)→data transmission→keep connection(transmit heartbeat package)→……→shutdown the connection”。心跳機制與服務器和客戶端是同步還是異步的收發方式無關,即無論是雙方同步通信還是異步通信,上述長連接和心跳包處理策略都適應。

3.3 WebSocket技術

網絡技術的飛速發展,對實時通信的需求越來越高,WebSocket技術應運而生[7]。與Socket不同,它處于應用層,從根上來說是基于TCP協議的,從這點上與HTTP相同,是對TCP協議的封裝。WebSocket依賴于HTTP協議首次握手,成功后,數據從TCP通道進行全雙工通信傳送,即服務器端能夠主動推送數據到客戶端,簡化了通信過程,握手成功后就不再依賴于HTTP。與Socket相比,WebSocket在具體使用中更加便捷、易用,因為它是完整的處于應用層的協議,帶有保準的API部分,而Socket是應用從和TCP/IP協議的中間接口,從而屏蔽TCP/IP協議的復雜性,靈活性上,Socket優于WebSocket,但嚴格意義上,Socket不是協議,是應用層與TCP/IP的中間層軟件抽象。它易于按照既定協議組織數據。

4 總結

Socket只是對TCP/IP協議棧操作的抽象,實際應用中,套接字在網絡通信中占有重要的地位,在網絡應用方面有著廣泛的應用前景和意義。本文研究了幾種不同的Socket理論和編程,包括多線程Socket通信、套接字心跳機制、Socket長連接、WebSocket等,并給出了Socket編程過程中的注意事項,特別是心跳機制和Socket長連接的設計思想和實踐中的注意問題,從而為套接字的應用提供技術支持。

參考文獻

[1] 孫龍,溫建新,馬凱.基于海洋網絡信息體系的自適應接口技術[J]中國電子科學研究院學報.2021,16(9):7-39

[2]李浩浩.基于深度學習的可回收垃圾視覺分揀系統[D].西安:西安理工大學,2021

[3] 王宏旭,吳小欣,黃杰.SOCKET編程實現局域網計算機監控管理分析[J].計算機光盤軟件與應用,2012(8):206-20

[4] Amit Arvind Agrawal. Fate of root shell after pontic/socket shield techniques,is it better to extract the whole tooth?[J] World Journal of Meta-Analysis.2021,9(4):333-341

[5]蘇俊維.OpenWrt智能路由器在中小型規模智慧農業中的應用[J].科學技術創新,2021(11):96-97

[6] 胡長鵬,馬海霞,林思敏,等.一種基于WiFi無線通訊的智能插座設計與實現[J].機電工程技術,2021,50(8):70-73

[7]梁靜.微服務框架下敏感信息的交叉跨域安全通信技術研究[D].成都:四川師范大學,2020

2747501186386

猜你喜歡
網絡通信機制
海上軍用網絡通信的安全控制技術
構建“不敢腐、不能腐、不想腐”機制的思考
基于網絡通信的智能照明系統設計
電子制作(2019年15期)2019-08-27 01:11:48
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
計算機網絡通信常見問題與技術發展研究
電子制作(2018年10期)2018-08-04 03:24:46
網絡通信中信息隱藏技術的應用
基于網絡通信的校園智能音箱設計
電子制作(2018年1期)2018-04-04 01:48:30
談計算機網絡通信常見問題及技術發展
電子制作(2017年17期)2017-12-18 06:41:06
定向培養 還需完善安置機制
中國衛生(2016年9期)2016-11-12 13:28:08
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
主站蜘蛛池模板: 亚洲国产AV无码综合原创| 婷婷久久综合九色综合88| 亚洲二三区| 欧美人与牲动交a欧美精品| 天天色综网| 国产在线观看一区二区三区| 99热这里只有免费国产精品 | 少妇高潮惨叫久久久久久| 成人午夜视频在线| 超薄丝袜足j国产在线视频| 波多野结衣无码中文字幕在线观看一区二区| 极品国产一区二区三区| 国产激爽爽爽大片在线观看| 伊人五月丁香综合AⅤ| 亚洲精品午夜无码电影网| 精品久久人人爽人人玩人人妻| 色天天综合久久久久综合片| 日韩一区二区在线电影| 久久99精品久久久大学生| 成人久久18免费网站| 亚洲欧美不卡中文字幕| 波多野结衣中文字幕一区| 色精品视频| 一本大道无码高清| 免费播放毛片| 国产精品美女自慰喷水| 亚亚洲乱码一二三四区| 在线日韩日本国产亚洲| 一级福利视频| 欧美成人aⅴ| 国产精品中文免费福利| 欧美一级在线播放| 最新国产午夜精品视频成人| 国产主播喷水| 婷婷激情亚洲| 国产精品xxx| 91免费国产在线观看尤物| 国产小视频在线高清播放| 91免费国产在线观看尤物| 亚洲男人天堂网址| 亚洲AⅤ无码国产精品| 91亚洲免费视频| 久久免费看片| 久久a毛片| 日本AⅤ精品一区二区三区日| 99在线视频网站| 国产成人综合亚洲欧美在| 波多野结衣无码中文字幕在线观看一区二区 | 婷婷在线网站| 波多野结衣一区二区三区四区视频| 性69交片免费看| 日本午夜精品一本在线观看| 精品一区二区三区视频免费观看| 中文毛片无遮挡播放免费| 国产簧片免费在线播放| 噜噜噜综合亚洲| 亚洲中文精品人人永久免费| 国产精品久久久久久久久久久久| 被公侵犯人妻少妇一区二区三区| 99草精品视频| 制服丝袜一区| 色天天综合| 亚洲自偷自拍另类小说| 国产欧美日韩在线一区| 欧美色综合网站| 自拍亚洲欧美精品| 日本免费福利视频| 999精品色在线观看| 久久免费视频播放| 免费一级毛片完整版在线看| 亚洲视频无码| 久草视频福利在线观看| 不卡视频国产| 超碰精品无码一区二区| 99久久精品免费观看国产| 亚洲欧美在线精品一区二区| 日韩精品毛片| 中国黄色一级视频| 在线观看亚洲人成网站| 五月天久久综合国产一区二区| 中文成人无码国产亚洲| 亚洲国产一区在线观看|