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

Socket通信過程原理及相關系統調用

2015-08-04 15:28:36王進文
中國新技術新產品 2015年7期
關鍵詞:網絡通信

王進文

摘 要:通過介紹Socket的基本組成結構及其發揮的作用,論述Socket通信的整個過程并用C語言加以簡要實現,以闡明Socket通信過程原理及相關系統調用。

關鍵詞:Socket;網絡通信;進程通信

中圖分類號:TP311 文獻標識碼:A

1 Socket基本組成結構

Socket是相同主機進程之間或者不同主機進程之間進行通信的主流手段之一,兩臺計算機之間的網絡通信可以通過在各自的系統中創建一個Socket,進而利用它來實現相互之間的通信。

那Socket究竟是什么呢?一個基本的Socket就是由本機IP,本機進程端口,目的IP,和目的進程端口,以及輸入輸出緩沖組成的一個數據結構。其中前四個屬性分別用來標識本機信息和目的計算機的信息,輸入輸出緩沖用來暫存保存通信的數據。

2 Socket通信連接步驟

Socket連接建立之前主要進行兩項工作,第一項是連接建立前的兩個Socket的初始化工作,第二個是兩臺計算機通信時的“三路握手”。下面詳細說明這兩個過程(假設兩臺通信的計算機為客戶端-服務器模型,調用中用到的參數,請自行查看相關API):

(1)兩個Socket的初始化。

服務器端

首先,用C語言通過系統調用socket()函數來創建套接口。通過以下程序段便可以建立一個用TCP的Socket:

int listensockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)

其次,通過系統調用int bind ()函數來初始化Socket中的本地IP地址和本地端口號。通過以下語句,便可以初始化服務器端的Socket:

bind( listensockfd, (struct sockaddr*) &saServer, sizeof(saServer));

最后,我們通過系統調用listen()函數來將已經綁定了本機IP地址和程序端口號的Socket的狀態由主動(positive)轉換為被動(passive)(只有處于被動的Socket才會接受對方的信息)。并調用accept()函數來獲取已經準備好的套接字準備收取數據。通過以下程序段,便可以啟動監聽Socket,并返回Q1隊列中和客戶端“三路握手”完成的套接字,如圖1所示。

listen( listensockfd, 5 );

int acceptSocket = accept( listenSocketfd, NULL, NULL );

客戶端

通過Socket系統調用建立Socket,然后初始化客戶端的IP地址和端口號,并通過connect()函數將初始化好的IP地址和端口號的數據結構綁定在新建的Socket上,與服務器端不同的是這個數據結構是為了初始化客戶端的IP地址和進程端口,如圖1所示。

(2)兩臺計算機通信時的“三路握手”

第一次握手:客戶端調用connect()函數將目的地(服務器端)的IP地址和進程端口初始化的同時,給內核運輸層發出指令,使其將封裝好(其中包含完整的四元組)的數據包(同步包,下面簡稱SYN包),通過更底層的協議層向目的地(服務器端)傳送,以發出請求。

第二次握手:當目的地(服務器端)收到客戶端發送的SYN包時,如果請求可以通過,服務器端也通過運輸層封裝好一個包含通過請求的SYN+ACK包,否則封裝一個拒絕請求的SYN+NACK包發送給客戶端,于此同時,服務器內核自動創建一個Socket,并將已將創建好的監聽套接口的本地IP地址和進程端口拷貝到新創建的Socket中的本地IP地址和進程端口中,將第一次握手過程中的SYN包中的客戶端的IP地址和端口號拷貝在新創建的Socket中的目的地IP地址和端口號中,然后將新創建的Socket放入監聽Socket中的Q0隊列(用于放置內核為服務器和不同客戶端通信創建的未完成“三路握手”Socket)中。

第三次握手:當客戶端收到服務器端回應的SYN+ACK包時,客戶端需要再返回給服務器一個SYN包表示已經收到SYN+ACK包,與此同時,服務器將剛才放入Q0隊列的Socket放入監聽套接口的Q1隊列中(用于放置內核為服務器和不同客戶端通信創建的已經完成“三路握手”Socket),而客戶端通過系統調用accept()正是獲取的Q1隊列中的套接字。如圖2所示。

3 通過socke進行通信

服務器端通過系統調用recv()進行數據的獲取,客戶端可以通過調用send()進行數據的發送。

以下便是整個Socket通信的流程圖,如圖2所示。

參考文獻

[1] Jesse Storimer. TCP Sockets編程[M].北京:人民郵電出版社,2013.

猜你喜歡
網絡通信
基于NoC架構的網絡通信抗干擾方法研究
海上軍用網絡通信的安全控制技術
基于網絡通信的智能照明系統設計
電子制作(2019年15期)2019-08-27 01:11:48
基于CAN總線的網絡通信信道的建模與研究
測控技術(2018年7期)2018-12-09 08:57:54
移動計算機網絡通信技術研究
電子測試(2018年14期)2018-09-26 06:05: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
汽車檢測控制系統網絡通信技術分析
電子測試(2017年23期)2017-04-04 05:07:12
主站蜘蛛池模板: 99er精品视频| 国产精品久线在线观看| 国产一区自拍视频| 二级特黄绝大片免费视频大片| 精品无码一区二区三区电影| 四虎永久免费地址在线网站| 亚洲国产在一区二区三区| 不卡视频国产| 性色一区| 国产九九精品视频| 在线无码av一区二区三区| 日韩毛片基地| 在线无码av一区二区三区| 国产精品福利一区二区久久| 91在线国内在线播放老师| 午夜精品久久久久久久无码软件 | 网久久综合| 就去吻亚洲精品国产欧美| 99九九成人免费视频精品| 亚洲女人在线| 99久久国产综合精品2020| 国产高清在线精品一区二区三区 | 亚洲精品人成网线在线| 欧美日本在线播放| 国产一区二区精品福利| 国产凹凸视频在线观看| 手机看片1024久久精品你懂的| 精品少妇人妻一区二区| 国产在线视频福利资源站| 天天综合天天综合| 无遮挡国产高潮视频免费观看| 日本欧美在线观看| 午夜啪啪福利| 美美女高清毛片视频免费观看| 亚洲综合第一区| 欧美97色| 漂亮人妻被中出中文字幕久久| 制服丝袜国产精品| 欧美亚洲国产精品第一页| 三级欧美在线| 性做久久久久久久免费看| 亚洲午夜福利精品无码不卡| 免费一级成人毛片| 亚洲V日韩V无码一区二区| 国产精品亚洲一区二区三区z| 成年人免费国产视频| 高清精品美女在线播放| 成人亚洲视频| 婷婷亚洲最大| 久久国产精品77777| 在线不卡免费视频| 亚洲中文字幕久久精品无码一区 | 色综合成人| 爆乳熟妇一区二区三区| 国产无码网站在线观看| 青青久视频| 白浆视频在线观看| 久久国产黑丝袜视频| 国产精品任我爽爆在线播放6080 | 青青草一区二区免费精品| 久久精品国产91久久综合麻豆自制| 日韩欧美国产另类| 日本三级黄在线观看| 国产永久在线观看| 日韩黄色精品| 久久精品亚洲专区| 久久伊人色| 91麻豆国产在线| 丰满少妇αⅴ无码区| 五月天香蕉视频国产亚| 一本大道无码高清| 99精品热视频这里只有精品7 | 色丁丁毛片在线观看| 亚亚洲乱码一二三四区| 国产精品亚洲欧美日韩久久| 久久精品嫩草研究院| 99re在线视频观看| 一区二区三区成人| 国产黄在线免费观看| 国产黄色爱视频| 精品亚洲国产成人AV| 99精品一区二区免费视频|