




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Linux高級程序設計(第二版)第12章Linuxsocket網絡編程基礎12網絡通信基礎
BSDSocketTCP網絡通信編程3BSDSocketUDP網絡通信編程4使用TCP實現簡單聊天程序2023/3/13人民郵電出版社出版楊宗德編著3OSI模型及TCP/IP協議模式2023/3/13人民郵電出版社出版楊宗德編著4TCP/IP體系結構及各層協議2023/3/13人民郵電出版社出版楊宗德編著5IP地址分類2023/3/13人民郵電出版社出版楊宗德編著6IP地址劃分類別前8位(二進制)點分十進制第一字節范圍默認子網掩碼廣播地址網絡數A0XXXXXXX1~126(127為回環地址)255.0.0.0X.255.255.255126B10XXXXXX128~191255.255.0.0X.X.255.25516384C110XXXXX192~223255.255.255.0X.X.X.2552097152D1110XXXX224~239N/AN/AN/AE1111XXXX240~254N/AN/AN/A2023/3/13人民郵電出版社出版楊宗德編著7網絡數據包封包與拆包過程2023/3/13人民郵電出版社出版楊宗德編著8數據包接收拆包分類流程2023/3/13人民郵電出版社出版楊宗德編著9以太網鏈路層數據幀格式2023/3/13人民郵電出版社出版楊宗德編著10IP數據包頭2023/3/13人民郵電出版社出版楊宗德編著11TCP包頭2023/3/13人民郵電出版社出版楊宗德編著12UDP數據包頭第12章Linuxsocket網絡編程基礎12網絡通信基礎
BSDSocketTCP網絡通信編程3BSDSocketUDP網絡通信編程4使用TCP實現簡單聊天程序2023/3/13人民郵電出版社出版楊宗德編著14類比電話通信,面向連接的socket通信實現2023/3/13人民郵電出版社出版楊宗德編著15通信過程首先,服務器端需要做以下準備工作:(1)調用socket()函數。建立socket對象,指定通信協議。(2)調用bind()函數。將創建的socket對象與當前主機的某一個IP地和端口綁定。(3)調用listen()函數。使socket對象處于監聽狀態,并設置監聽隊列大小。客戶端需要做以下準備工作:(1)調用socket()函數。建立socket()對象,指定相同通信協議。(2)應用程序可以顯式的調用bind()函數為其綁定IP地址和端口,當然,也可以將這工作交給TCP/IP協議棧。接著建立通信連接:(1)客戶端調用connect()函數。向服務器端發出連接請求。(2)服務端監聽到該請求,調用accept()函數接受請求,從而建立連接,并返回一個新的socket文件描述符專門處理該連接。然后通信雙方發送/接收數據:(1)服務器端調用write()或send()函數發送數據,客戶端調用read()或者recv()函數接收數據。反之客戶端發送數據,服務器端接收數據。(2)通信完成后,通信雙方都需要調用close()或者shutdown()函數關閉socket對象。2023/3/13人民郵電出版社出版楊宗德編著16BSDSocket網絡編程APIsocket2023/3/13人民郵電出版社出版楊宗德編著17Socket參數說明第一個參數用來指明此socket對象所使用的地址簇或協議簇.2023/3/13人民郵電出版社出版楊宗德編著18Socket參數說明第二個參數為socket的類型。2023/3/13人民郵電出版社出版楊宗德編著19BSDSocket網絡編程APIbind完成此步,該socket擁有了本地IP地址,端口,通信協議,不能接收客戶端的請求,但可以向服務器發起連接。2023/3/13人民郵電出版社出版楊宗德編著20Bind參數說明第二個參數是一個指向sockaddr結構的指針。structsockaddr只是提供地址類型規范,根據不同的應用,sockaddr需要選用不同的類型。2023/3/13人民郵電出版社出版楊宗德編著21地址結構體定義--UNIX域套接字2023/3/13人民郵電出版社出版楊宗德編著22地址結構體定義--IPV42023/3/13人民郵電出版社出版楊宗德編著23端口與IP地址2023/3/13人民郵電出版社出版楊宗德編著24BSDSocket網絡編程APIlisten第一個參數是綁定了IP及端口信息的socket文件描述符。第二個參數為請求排隊的最大長度。當有多個客戶端程序和服務器端相連時,此值表示可以使用的處于等待的隊列長度。listen函數將綁定的socket文件描述符變為監聽套接字,完成此步:服務器已經準備接收客戶端連接請求了。2023/3/13人民郵電出版社出版楊宗德編著25BSDSocket網絡編程API客戶端發起連接connect其第一個參數為socket返回的文件描述符。第二個參數儲存了服務器端的地址(包括服務器的IP地址和端口信息)。第三個參數為該地址的長度。如果執行成功,此函數將與地址為addr的服務器建立連接,并返回0,如果失敗則返回-1。正確完成此步:客戶端socket擁有了目的IP,端口信息。2023/3/13人民郵電出版社出版楊宗德編著26BSDSocket網絡編程API
服務器接收連接accept
第一個參數是監聽網絡后的socket文件描述符。第二參數為structsockaddr類型的地址空間首地址,第三個參數為該段地址空間長度,因此第二個參數用來存儲客戶端的IP地址和端口信息,以便為客戶端返回數據。需要注意的是,如果執行成功,此函數將返回一個新的文件描述符以標識該連接,從而使原來的文件描述符可以繼續等待新的連接,這樣便可以實現多客戶端。如果執行失敗,將返回-1。至此,兩端的連接已經建立,而服務器端又是如何區別多個連接的呢?2023/3/13人民郵電出版社出版楊宗德編著27如何區分多個客戶端對于任何一個TCP連接,最重要的信息包括源IP:源端口,目的IP:目的端口四個信息。例如,客戶機192.168.0.10/24的3000、4000兩端口同時向服務器192.168.0.100/24的80端口發起兩個連接,在服務器端是如何區別兩個連接的呢?2023/3/13人民郵電出版社出版楊宗德編著28BSDSocket網絡編程API
讀/寫socket
2023/3/13人民郵電出版社出版楊宗德編著29BSDSocket網絡編程API
send/recv第一個參數為發送的目標socket對象;第二個參數為欲發送的數據位置;第三個參數為數據的大小;第四個參數操作flags,支持的值為0或MSG_OOB(發送帶外數據)等。對套接字調用write()的行為與將flags設置為0的send()的行為完全相同。如果執行成功,此函數將返回發送數據的大小,如果失敗,將返回-1。2023/3/13人民郵電出版社出版楊宗德編著30BSDSocket網絡編程API關閉socket對象
close/shutdownhowto=0這個時候系統會關閉讀通道,但是可以繼續往socket描述符中寫。howto=1關閉寫通道,和上面相反,此時只可以讀。howto=2關閉讀寫通道,和close一樣,在多進程程序里,當幾個子進程共享一個套接字時,如果使用shutdown,那么所有的子進程都將不能操作,這時只能使用close()函數來關閉子進程的套接字描述符。第12章Linuxsocket網絡編程基礎12網絡通信基礎BSDSocketTCP網絡通信編程3BSDSocketUDP網絡通信編程4使用TCP實現簡單聊天程序2023/3/13人民郵電出版社出版楊宗德編著32面向無連接通信模型2023/3/13人民郵電出版社出版楊宗德編著33BSDSocket網絡編程APIsendto/recvfrom
第一個參數為發送的目標socket對象。第二個參數為欲發送的數據信息。第三個參數為發送數據的大小。第四個參數為flags,如send函數所示。第五個參數欲發送數據的目標地址,其結構體前面已經介紹。第六個參數為此結構體的大小。2023/3/13人民郵電出版社出版楊宗德編著34BSDSocket網絡編程APIgetsockname/getpeername獲得一個套接字(這個套接口至少完成了綁定本地IP地址)的本地地址。如果成功則返回0,如果發生錯誤則返回-1。第1個參數為欲讀取信息的socket文件描述符第2,3個參數分別為存儲地址的內存空間地址和大小。getpeername()函數將取得一個已經連接上的套接字的遠程信息(比如IP地址和端口)。2023/3/13人民郵電出版社出版楊宗德編著35應用示例使用AF_UNIX實現本機數據流通信示例見代碼使用AF_INET實現UDP點對點通信示例見代碼第12章Linuxsocket網絡編程基礎12網絡通信基礎
BSDSocketTCP網絡通信編程3BSDSocketUDP網絡通信編程4使用TCP實現簡單聊天程序2023/3/13人民郵電出版社出版楊宗德編著37服務端運行結果(IP地址為192.168.0.93)2023/3/13人民郵電出版社出版楊宗德編著38客戶機運行結果(IP地址為192.168.0.133)此程序只實現一端到端的數據傳遞,且只能一發一收的方式。具體見代碼分析。2023/3/13人民郵電出版社出版楊宗德編著39習題(1)七層模型與TCP/IP協議模型比較,各層完成的基本功能,對應的各層最主要功能是什么?(2)寫出你所知道的網絡設備、網絡協議其簡單工作原理描述,并列出其工作在TCP/IP協議棧的哪一層。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織健步走活動方案
- 公司植樹節項目活動方案
- 2025年運動醫學職業資格考試試卷及答案
- 拓展知識-室外消火栓系統的工作原理
- 2025年心理咨詢與治療的基礎知能力考試卷及答案
- 2025年小兒醫學基礎與臨床技能考試卷及答案
- 2025年心理健康教育考試試卷及答案
- 2025年社會心理學基礎知識考試試卷及答案
- 2025年生物技術專業研究生入學考試試卷及答案
- 2025年企業培訓與發展專業畢業生測評試卷及答案
- 云南楚雄州金江能源集團有限公司招聘筆試題庫2025
- 高中生物2015-2024年10年高考真題專題分類匯編-專題14體液調節考點2激素調節的過程
- 2024年四川省成都市中考地理試卷(含答案與解析)
- 典當行內部基本管理制度
- 2024年內蒙古呼和浩特中考滿分作文《留在記憶里的芬芳》
- GB/T 29456-2025能源管理體系實施、保持和改進GB/T 23331能源管理體系指南
- 北京市清華附小2024-2025學年數學三下期末質量檢測模擬試題含解析
- (2025春新版本)北師大七年級下冊生物全冊教案
- 2025年教科新版五年級語文下冊階段測試試卷
- 《MLCC制程介紹》課件
- 關于物業客服培訓的
評論
0/150
提交評論