当前位置:网站首页>socket快速理解
socket快速理解
2022-08-03 15:58:00 【sean.liu】
相信大家都知道,socket用于描述IP地址和端口,是一个通信链的句柄。但是如何使用它,它是如何通信的。
直接看代码或者函数说明可能有点乱。在这里给出一个直观清晰的解释。下图是tcp套接字的工作流程。然后再用类比说明让你快速明白工作流程。
tcp套接字流程
服务器端:
- 获取电话线 socket()
- 分配电话号码 bind()
- 等着电话打来 listen()
- 接听电话 accept()
- 相互交谈 read()/write()
- 挂断电话 close()
客户端:
- 获取电话线 socket()
- 呼叫服务器 connect()
- 相互交谈 read()/write()
- 挂断电话 close()
二者区别:
- 服务端是需要绑定地址的bind()函数,客户端不需要。
- 客户端用connect()链接,服务端用listen()等待,accept()接收。
- 客户端挂断close()直接关掉整个socket(),但服务端不是,服务端close()传入的是accept()返回的描述符,不是socket()返回的描述符。因为一个服务端是可以链接多个客户端的,所以accept()一个链接,就会生成一个文件描述符,而客户端的socket是直接用socket()返回的描述符通信的。
边栏推荐
猜你喜欢
随机推荐
AWS China SDN Connector
Difference and performance comparison between HAL and LL library of STM32
C#.NET 国密数字信封
土耳其国防部:联合协调中心将对首艘乌克兰粮船进行安全检查
How Navicat connects to MySQL on a remote server
Common distributed theories (CAP, BASE) and consensus protocols (Gosssip, Raft)
LyScript 验证PE程序开启的保护
ReentrantLock详解
基于DMS的数仓智能运维服务,知多少?
深入浅出Flask PIN
语音识别新一轮竞争打响,自然对话会是下一个制高点吗?
建造者模式/生成器模式
Awesome!Coroutines are finally here!Thread is about to be in the past
一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
Neural networks, cool?
在 360 度绩效评估中应该问的 20 个问题
瞌睡检测系统介绍
leetcode-268.丢失的数字
参与便有奖,《新程序员》杂志福利来袭!
GTK实现旋转加载动画