linux send 失败_linux下使用writesend发送数据报eagainresourcetemporarilyunavailable错

linux

下使用

writesend

发送数据报

eagainresourcetemporarilyunavailable

linux

下使用

write\send

发送数据报

EAGAIN : Resource

temporarily unavailable

错首先是我把套接字设置为异步的

了,然后在使用

write

发送数据时采取的方式是循环发送大

量的数据;

由于是异步的,

write\send

将要发送的数据提交到

发送缓冲区后是立即返回的,并不需要对端确认数据已接

收。在这种情况下是很有可能出现发送缓冲区被填满,导致

write\send

无法再向缓冲区提交要发送的数据。

因此就产生了

Resource temporarily unavailable

的错误,

EAGAIN

的意思也

很明显,就是要你再次尝试。从字面上来看,是提示再试一

次。这个错误经常出现在当应用程序进行一些非阻塞

(non-blocking)

操作

(

对文件或

socket)

的时候。例如,以

O_NONBLOCK

的标志打开文件

/socket/FIFO

如果你连续做

read

操作而没有数据可读。此时程序不会阻塞起来等待数据

准备就绪返回,

read

函数会返回一个错误

EAGAIN

,提示你

的应用程序现在没有数据可读请稍后再试。又例如,当一个

系统调用

(

比如

fork)

因为没有足够的资源

(

比如虚拟内存

)

执行失败,返回

EAGAIN

提示其再调用一次

(

也许下次就能

成功

)

Linux -

非阻塞

socket

编程处理

EAGAIN

错误在

linux

进行非阻塞的

socket

接收数据时经常出现

Resource

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值