c语言connect函数,Linux C语言 connect 的超时设置(含源码和例程)

0x01 关键步骤和相关函数

网络编程中默认情况下进入connect函数,会一直等待连接结束。超时等待设置关键在于

1、将socket置为非阻塞后

2、设定超时等待时间

3、时间结束后读取socket状态,进行判断

1、设置socket为非阻塞

记录下两种设置socket为非阻塞方式,分别是fcntl() 和 ioctl() 两个函数fcntl()#include

#include

/*********************************************************************

* Function : fcntl

* Description : 根据文件描述符操作文件特性

* Parameter :

* @fd 文件描述符

* @cmd 操作命令:

* F_DUPFD : 复制文件描述词。

* FD_CLOEXEC : 设置close-on-exec标志

* F_GETFD : 读取文件描述词标志

* F_SETFD : 设置文件描述词标志

* F_GETFL : 读取文件状态标志

* F_SETFL : 设置文件状态标志

* ...

* @arg 供命令使用的参数

*

* Return : int

*

* Usage :

* int fcntl(int fd, int cmd);

* int fcntl(int fd, int cmd, long arg);

* int fcntl(int fd, int cmd, struct flock *lock);

*

* 参考 man 或:

* https://blog.csdn.net/weixin_34362875/article/details/86340074

*

*********************************************************************/

int fcntl(int fd, int cmd, ... /* arg */ );ioctl()#include

/*********************************************************

* Function : ioctl

* Description : 设备驱动程序中对设备的I/O通道进行管理的函数

* Parameter :

* @fd 文件描述符

* @request 操作命令:

* FIONBIN : 设置/ 清除非阻塞I/O 标志

* FIOASYNC : 设置/ 清除信号驱动异步I/O 标志

* FIONREAD : 获取接收缓存区中的字节数

* FIOSETOWN : 设置文件的进程ID 或进程组ID

* FIOGETOWN : 获取文件的进程ID 或进程组ID

* ...

* @arg 供命令使用的参数

*

* Return : int

*

* 参考 man 或:

* https://www.cnblogs.com/tdyizhen1314/p/4896689.html

* 上文详细介绍了该函数的用途

* 以及request对应参数所需要提供的arg类型

*********************************************************/

int ioctl(int fd, unsigned long request, .../* arg */);

2、超时等待select() 多路复用#include

#include

#include

#include <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值