IO读写接口,大多类似:
int read(stream, buf, buflen)
int write(stream, data, datalen)
读取接口,返回读取到的数据长度。
写入接口,返回写入完的数据长度。
读取接口,读取到的数据长度取返回值,一般都不会写错代码。
错误代码案例:
可能出现bug的场景:
int read(stream, buf, buflen)
int write(stream, data, datalen)
读取接口,返回读取到的数据长度。
写入接口,返回写入完的数据长度。
读取接口,读取到的数据长度取返回值,一般都不会写错代码。
写入接口,注意返回的不一定是待写入的数据长度。
错误代码案例:
int ret = write(sock, data, datalen);
if(ret<=0){
//发送数据失败,等待10毫秒后重试
//...
}
//发送数据成功
//...
可能出现bug的场景:
socket设置为非阻塞的,连续发送数据,网卡一下子发不出去,再次调用发送时,就只发送了一部分数据。