socket套接字通信流程

本文详细解释了服务器如何使用文件描述符(lfd和cfd)进行监听、绑定、接受客户端连接,以及客户端通过socket、connect进行通信的过程,涉及read和write等函数及其在连接断开时的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器
有两个文件描述符。一个lfd用于监听,一个cfd用于通信。
socket()返回用于监听的文件描述符lfd,bind()绑定该文件描述符以及服务器的IP和端口(用sockaddr结构体储存),listen()使服务器进入LISTEN状态并指定最大监听数,accept()函数指定一个sockaddr结构体存储客户端的IP和端口,如果没有客户端的连接请求则阻塞,有则返回通信的文件描述符cfd。read(recv)函数用来读取缓冲区中的数据,write(send)函数用来写缓冲区中的数据。如果read返回0说明客户端断开连接。
客户端
只有一个文件描述符fd,用于通信。
socket()返回fd,connect()请求连接服务器,传入一个sockaddr结构体存储要访问的服务器IP和端口,成功连接服务器后,客户端会随机绑定一个端口。后续和服务器一致。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值