社区
通信技术
帖子详情
unix中如何设置一socket为非阻塞方式?
mnbvcxz
2000-08-16 11:23:00
我在作一ftp客户端程序,现在的问题是在get一个文件时,如网络中断,则程序阻塞,不能退出,听说将socket设为非阻塞可以,请高手指点,多谢.
...全文
208
3
打赏
收藏
unix中如何设置一socket为非阻塞方式?
我在作一ftp客户端程序,现在的问题是在get一个文件时,如网络中断,则程序阻塞,不能退出,听说将socket设为非阻塞可以,请高手指点,多谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
borz
2000-08-18
打赏
举报
回复
试一下:
fcntl(socket_fd,F_SETFL,O_NONBLOCK)
Kevin_qing
2000-08-17
打赏
举报
回复
关注
wwwunix
2000-08-17
打赏
举报
回复
用select调用。
WebServer为什么需要将
socket
设置
为
非阻塞
?
目录一些基本概念解释1.
socket
文件描述符有哪些2.
socket
文件描述符
设置
为阻塞的影响二、使用epoll模型将
socket
设置
为
非阻塞
1.listenfd
非阻塞
2.clientfd
非阻塞
(1)epoll的ET模式(2)epoll返回读写事件,但不一定真的可读写小结 一些基本概念解释 1.
socket
文件描述符有哪些 网络
中
的客户端和服务器进行连接通信时需要建立连接,服务器端需要两个
socket
文件描述符,分别是建立连接时需要的监听文件描述符listenfd和连接完成后的已连接文件描述符clientf
服务器编程心得(四)—— 如何将
socket
设置
为
非阻塞
模式
只要将accept4()最后一个参数flags
设置
成SOCK_NONBLOCK即可。3. 除了创建
socket
时,将
socket
设置
成
非阻塞
模式,还可以通过以下API函数来
设置
:参考:),linux下如果调用fcntl()
设置
socket
为
非阻塞
模式,不仅要
设置
O_NONBLOCK模式,还需要在接收和发送数据时,需要使用MSG_DONTWAIT标志,即在recv,recvfrom和send,sendto数据时,将flag
设置
为MSG_DONTWAIT。
网络编程6: 如何将一个
socket
设置
为
非阻塞
(windows和Linux)
如何将一个
socket
设置
为
非阻塞
(windows和Linux)
socket
的阻塞模式和
非阻塞
模式(send和recv函数在阻塞和
非阻塞
模式下的表现)
socket
的阻塞模式和
非阻塞
模式 无论是Windows还是Linux,默认创建
socket
都是阻塞模式的 在Linux
中
,可以再创建
socket
是直接将它
设置
为
非阻塞
模式 int
socket
(int __domain, int __type, int __protocol) 将__type增加SOCK_NOBLOCK 不仅如此,在Linux上直接利用accept函数返回的代表与客户端通信的
socket
也提供了一个拓展函数accept4,直接将accept4返回的
socket
设置
为
非阻塞
的 send和
socket
connect阻塞和
非阻塞
处理
建立
socket
后默认connect()函数为阻塞连接状态,在大多数实现
中
,connect的超时时间在75s至几分钟之间,想要缩短超时时间,可解决问题的两种方法:方法一、将
socket
句柄
设置
为
非阻塞
状态,方法二、采用信号处理函数
设置
阻塞超时控制。 在一个TCP套接口被
设置
为
非阻塞
之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行
中
,但是仍未完成;同...
通信技术
4,356
社区成员
28,926
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章