您的位置:首页 > 其它

IO读写注意处理数据只写了一部分的情况

2015-11-23 20:07 281 查看
IO读写接口,大多类似:

int read(stream, buf, buflen)

int write(stream, data, datalen)

读取接口,返回读取到的数据长度。

写入接口,返回写入完的数据长度。

读取接口,读取到的数据长度取返回值,一般都不会写错代码。
写入接口,注意返回的不一定是待写入的数据长度。



没有做好判断,就导致数据只写了一部分,却判断为写入成功。

错误代码案例:
int ret = write(sock, data, datalen);
if(ret<=0){
//发送数据失败,等待10毫秒后重试
//...
}
//发送数据成功
//...


可能出现bug的场景:
socket设置为非阻塞的,连续发送数据,网卡一下子发不出去,再次调用发送时,就只发送了一部分数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IO