IO读写注意处理数据只写了一部分的情况
2015-11-23 20:07
281 查看
IO读写接口,大多类似:
int read(stream, buf, buflen)
int write(stream, data, datalen)
读取接口,返回读取到的数据长度。
写入接口,返回写入完的数据长度。
读取接口,读取到的数据长度取返回值,一般都不会写错代码。
写入接口,注意返回的不一定是待写入的数据长度。
没有做好判断,就导致数据只写了一部分,却判断为写入成功。
错误代码案例:
可能出现bug的场景:
socket设置为非阻塞的,连续发送数据,网卡一下子发不出去,再次调用发送时,就只发送了一部分数据。
int read(stream, buf, buflen)
int write(stream, data, datalen)
读取接口,返回读取到的数据长度。
写入接口,返回写入完的数据长度。
读取接口,读取到的数据长度取返回值,一般都不会写错代码。
写入接口,注意返回的不一定是待写入的数据长度。
没有做好判断,就导致数据只写了一部分,却判断为写入成功。
错误代码案例:
int ret = write(sock, data, datalen); if(ret<=0){ //发送数据失败,等待10毫秒后重试 //... } //发送数据成功 //...
可能出现bug的场景:
socket设置为非阻塞的,连续发送数据,网卡一下子发不出去,再次调用发送时,就只发送了一部分数据。
相关文章推荐
- Node.js 的异步 IO 性能探讨
- SQL Server误区30日谈 第22天 资源调控器可以调控IO
- mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
- java中的Io(input与output)操作总结(一)
- GO语言的IO方法实例小结
- java中的Io(input与output)操作总结(四)
- C#路径,文件,目录及IO常见操作汇总
- SQL语句实现查询当前数据库IO等待状况
- Java进阶教程之IO基础
- java中的Io(input与output)操作总结(三)
- Java 1.0和Java 1.1 的IO类的比较
- JAVA IO API使用详解
- Java NIO和IO的区别
- Java编程中最基础的文件和目录操作方法详解
- Python中使用select模块实现非阻塞的IO
- Python通过poll实现异步IO的方法
- Python通过select实现异步IO的方法
- STM32 IO口双向问题
- 花1K内存实现高效I/O的RandomAccessFile类
- UNIX系统的IO模型