Linux 网络编程(三)之fcntl()非堵塞

Linux socket编程(一)之fcntl()非堵塞

一.背景
     我们都知道一台服务器会与许多主机建立连接,但是之前的connect(),recv(),send()等都是堵塞函数。举个例子,服务器端的accept()用于接受请求建立连接,当发生accept()调用时,服务器端的程序就会一直等着某个客户端向它发送建立连接的请求,也就是发生了堵塞。我们可以把代表这个服务器程序的socket套接字描述符(sockfd)通过fcntl()设置为非堵塞方式,即当没有客户端请求建立连接时,就直接返回。
二.fcntl()使用:
1.获取文件的flags:
flags=fcntl(fd,F_GETFL,0);
2.给flags增添非堵塞属性:
flags|=O_NONBLOCK;//多个参数用|连接
3.设置文件的flags:
fcntl(fd,F_SETFL,flags);
取消文件的非堵塞属性如下:
flags=fcntl(fd,F_GETFL,0);
flags&=~NONBLOCK;
fcntl(fd,F_SETFL,flags);
三.实例代码如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值