select版的TCP通信

本文介绍了如何使用select系统调用实现TCP通信。首先讲解了select的功能和特点,包括设置和测试文件描述符集的宏。接着阐述了TCP通信的框架搭建,包括服务器端的socket、bind、listen、accept,以及客户端的connect。通过一个数组记录监听套接字,并在接收到新的客户端连接时,将新套接字添加到数组中,利用select监听数据传输。最后提到了服务器端的代码示例。

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

        编写代码之前,大概先说一下利用select编写tcp的思路及select特点。

        select系统调用是用来让程序监视多个文件句柄的状态变化的,程序会停在select这里等待,直到被监视的句柄有一个或者多个发生了状态改变。

select函数为:int select(int nfds,fd_set *readfds,fd_set* writefds,异常文件描述符,时间长度)//默认时间长度异常事件描述符一般都为NULL

在select中提出四个宏来处理描述数组的方式:(fd为文件描述符集set为描述数组)

FD_SET(fd,fd_set* set):用来设置set中fd位

FD_ISSET(fd,fd_set* set):用来测试set中额相关fd位是否为真

FD_ZERO(fd,fd_set* set):用来清除set的全部位

FD_CLR(fd_set*set):用来清除set中相关的fd的位

当然select的模型最终的特点如下:(1)select下可监控的文件描述符的个数取决于系统的大小

(2)每次检测到一个新的fd,都要手动的将fd添加到set中,并且使用一个数据结构arrar来保存select监控集中的set

(3)select模型必须在设了select前循环array


在大致了解了select的特点之后,现在就来说一说select 版的tcp的编写思路:

1:搭建好基本的tcp的框架,在服务器端编写-->生成套接字(starup),绑定端口(bind),监听(listen)模块,接受客户端访问(accept)模块<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值