多路复用与设置阻塞、非阻塞模式
生活随笔
收集整理的這篇文章主要介紹了
多路复用与设置阻塞、非阻塞模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多路復用與設置阻塞、非阻塞模式 - To be, or not to be: that is the question - 博客頻道 - CSDN.NET
多路復用與設置阻塞、非阻塞模式
分類: Linux/Unix C/C++ Network Program 2009-10-06 20:30 202人閱讀 評論(0) 收藏 舉報阻塞和非阻塞模式使用fcntl()可以進行設置,linux下默認的是阻塞模式,windows下相反。下面講述設置模式三步驟:
1、獲取模式標識
int? mode_flag;? listen_socket;
mode_flag = fcntl(listen_socket,F_GETFL,0);
2、設置模式標識為目標模式。非阻塞模式為O_NONBLOCK,阻塞模式為~O_NONBLOCK。這里以阻塞模式為例。
mode_flag&=~O_NONBLOCK;
3、將套接字設置為模式標識所表示的模式
fcntl(listen_socket,F_SETFL,mode_flag);
?
另外,使用ioctl()也可以設置阻塞和非阻塞模式。
int b_on=1;
ioctl(listen_socket,FIONBIO,&b_on);
?
通過setsockopt()可以設置端口可被多次綁定,以達到多路復用的目的。
setsockopt(listen_socket,(struct sockaddr *)&servaddr,sizeof(servaddr));
總結
以上是生活随笔為你收集整理的多路复用与设置阻塞、非阻塞模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Asp.net MVC处理文件的上传
- 下一篇: 给四十岁的你