java udp socket,(1)什么是socket(套接字)

 2023-11-19 阅读 26 评论 0

摘要:什么是套接字socket java udp socket、socket把傳輸層以下的協議都封裝成了簡單的接口,我編寫基于網絡通信的軟件只需要調用這些接口即可,寫出的程序自然是遵循tcp/udp協議的.... 什么是互聯網 互聯網=物理連接介質+互聯網通信協議 ip+port就可以標識全世界范圍內

什么是套接字socket

java udp socket、socket把傳輸層以下的協議都封裝成了簡單的接口,我編寫基于網絡通信的軟件只需要調用這些接口即可,寫出的程序自然是遵循tcp/udp協議的....

什么是互聯網

互聯網=物理連接介質+互聯網通信協議

ip+port就可以標識全世界范圍內獨一無二的一個基于網絡通信的軟件

為何要用socket
目標: 編寫一個C/S架構的軟件

server端必須具備:
1. 服務端需要穩定運行,一直對外提供服務
2. 服務端必須綁定一個固定的地址(這個固定地址就是ip+port(端口))
3. 服務端要支持并發

?

基于文件類型的套接字家族

套接字家族的名字:AF_UNIX

unix一切皆文件,基于文件的套接字調用的就是底層的文件系統來取數據,兩個套接字進程運行在同一機器,可以通過訪問同一個文件系統間接完成通信

基于網絡類型的套接字家族

套接字家族的名字:AF_INET

(還有AF_INET6被用于ipv6,還有一些其他的地址家族,不過,他們要么是只用于某個平臺,要么就是已經被廢棄,或者是很少被使用,或者是根本沒有實現,所有地址家族中,AF_INET是使用最廣泛的一個,python支持很多種地址家族,但是由于我們只關心網絡編程,所以大部分時候我么只使用AF_INET)

?

網絡基本知識看這個鏈接:http://www.cnblogs.com/linhaifeng/articles/5937962.html(一定要看而且要理解,是網絡編程的基礎)

?

為何學習socket一定要先學習互聯網協議:

C/S架構的軟件(軟件屬于應用層)是基于網絡進行通信的

網絡的核心即一堆協議,協議即標準,你想開發一款基于網絡通信的軟件,就必須遵循這些標準

?

?

到底什么是套接字socket,見圖示

PS:可以看到在應用層和傳輸層的中間加了一個抽象層,Socket把傳輸層以下的全部封裝好了,在寫程序的時候只要調用Socket的接口收發數據,寫出來的程序自然就是遵循互聯網協議的

?

套接字的工作流程

PS:先從服務器端說起。服務器端先初始化Socket,然后與端口綁定(bind),對端口進行監聽(listen),調用accept阻塞,等待客戶端連接。在這時如果有個客戶端初始化一個Socket,然后連接服務器(connect),如果連接成功,這時客戶端與服務器端的連接就建立了。客戶端發送數據請求,服務器端接收請求并處理請求,然后把回應數據發送給客戶端,客戶端讀取數據,最后關閉連接,一次交互結束

PS:什么是阻塞,就是服務端在監聽后沒有收到服務端發送的請求,這時候會一直停留在accpet這一段,所以就好比堵住了,知道請求進來會開始執行后續的代碼

轉載于:https://www.cnblogs.com/shizhengquan/p/10133321.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/179333.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息