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

来源:互联网 发布:java定义二维数组 编辑:程序博客网 时间:2024/06/05 02:54
IO读写接口,大多类似:
int read(stream, buf, buflen)
int write(stream, data, datalen)


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


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

写入接口,注意返回的不一定是待写入的数据长度。


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

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


可能出现bug的场景:

socket设置为非阻塞的,连续发送数据,网卡一下子发不出去,再次调用发送时,就只发送了一部分数据。




0 0
原创粉丝点击