[求助 各位大神好]有关socket read和write 的问题!
//谢谢每一位回答的朋友。
//该问题为linux Ubuntu下
最近写了喜欢起网络编成了,但是经过实践我有了一些困惑。那就是本以为read函数读取时会读出请求的字段后返回:
例如:
int len = 100;
if(-1 == (nbytes = read(fd,buffer,100)))
{
cerr<<strerror(errno)<<endl;
exit(1);
}
可测试结果却不是,后经查资料得知,read当缓冲区少于len字节时也会全部读取而返回。
那么我再想客户端先发送30 条20字节消息,然后服务端sleep(100),之后再读取循环1024字节进入buffer,然后输出,结果呢,居然这600字节需要分30次读取,这是为什么?
------解决方案--------------------客户端的write只是把数据写到输出队列就返回,并不能保证write返回时数据已经被发送出去了。