windows网络编程中使用select

本文介绍了在Windows网络编程中如何使用select函数,包括初始化fd_set,通过select查找有效socket进行处理,判断并保存可读socket,以及详细处理单个socket数据的步骤。测试结果显示该方法有效。

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

1.初始化fd_set


tuple<fd_set, fd_set, fd_set> InitFdset(SOCKET _sock)
{
	tuple<fd_set, fd_set, fd_set> fds;
	fd_set rfd = {}, wfd = {}, efd = {};
	FD_ZERO(&rfd);
	FD_ZERO(&wfd);
	FD_ZERO(&efd);
	FD_SET(_sock, &rfd);
	FD_SET(_sock, &wfd);
	FD_SET(_sock, &efd);
	fds = make_tuple(rfd, wfd, efd);
	return fds;
}

2.调用select查找有效socket并处理

timeval t = {0,0};
int ret = select(_sock + 1, &rfd, &wfd, &efd, &t);//最后参数NULL为阻塞模式 

3.判断可读socket,保存连接

if (FD_ISSET(_sock, &rfd))
{
	FD_CLR(_sock, &rfd);
	sockaddr_in cAddr = {};
	int len = sizeof(sockaddr_in);
	SOCKET c = INVALID_SOCKET;
	c = accept(_sock, (s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值