CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

初级问题,socket(AF_INET, SOCK_STREAM, 0)是阻塞式还是非阻塞式?

楼主wybin(星雨)2006-03-21 16:19:16 在 Linux/Unix社区 / 程序开发区 提问

我想在UNIX下编一个socket   Server,希望recv的时候,如果没有数据就直接返回,  
  TCP的Socket     socket(AF_INET,   SOCK_STREAM,   0)好像是阻塞的方式吧?  
  怎么设置为非阻塞的方式?  
  能给个例子吗? 问题点数:100、回复次数:6Top

1 楼fierygnu(va_list)回复于 2006-03-21 16:24:05 得分 0

用fcntl设置O_NONBLOCK。Top

2 楼wybin(星雨)回复于 2006-03-21 17:04:36 得分 0

能具体说明一下fcntl怎么设置吗?Top

3 楼fierygnu(va_list)回复于 2006-03-21 17:20:20 得分 25

fcntl   (socket_fd,   F_SETFL,   O_NONBLOCK)Top

4 楼bjpy2005(冰城的神话)回复于 2006-03-22 00:30:35 得分 25

int   flags;  
   
  /*Set   a   socket   as   nonblocking*/  
  if(   (flags   =   fcontl   (fd   ,F_GETFL,0))   <   0)  
            err_sys("F_GETFL   error")   ;  
   
  flags   |=   O_NONBLOCK;  
  if(   (fcntl   (fd,   F_SETFL,   flags)   <   0)  
            err_sys("F_SETFL   error")   ;  
   
   
   
  Top

5 楼Mybox(卡卡西)回复于 2006-03-22 10:18:39 得分 25

int   val;  
  val   =   fcntl(sock_fd,   F_GETFL,   0);  
  fcntl(sock_fd,   F_SETFL,   val   |   O_NONBLOCK);Top

6 楼tonyMCM(南京~上海)回复于 2006-03-22 15:35:10 得分 25

int   flags;  
  flags=fcntl(listenfd,F_GETFL,0);//通过   F_GETFL   获取文件描述标志给flags  
  fcntl(listenfd,F_SETFL,flags|O_NONBLOCK);//此处只是把描述符寄存位制为O_NONBLOCK  
  Top

相关问题

  • Socket通讯阻塞
  • Socket老阻塞怎么办?
  • socket阻塞的问题
  • 如何创建阻塞socket和非阻塞socket?
  • Sock的阻塞与非阻塞有什么分别?
  • 如何Cancel掉阻塞式socket?
  • socket非阻塞通讯问题?
  • /*============ 急:关于Socket的阻塞问题 ============*/
  • ========== 关于socket的非阻塞模式 ============
  • 问一个Socket非阻塞问题

关键词

  • socket
  • nonblocking
  • 非阻塞
  • fcntl
  • af
  • sock
  • inet
  • stream
  • 设置
  • 是阻塞

得分解答快速导航

  • 帖主:wybin
  • fierygnu
  • bjpy2005
  • Mybox
  • tonyMCM

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo