日期:2014-05-16  浏览次数:20665 次

[求助 各位大神好]有关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次读取,这是为什么?
linux?? socket read

------解决方案--------------------
客户端的write只是把数据写到输出队列就返回,并不能保证write返回时数据已经被发送出去了。