QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 887|回复: 3

read返回的字节数 是不是有buffer的限制?

[复制链接]
发表于 2004-9-16 13:29:04 | 显示全部楼层 |阅读模式
有一个服务端 当有连接时就发送一篇文章
(在linux下,rh7.3)
另外我写了一个客户端 连接上后接受这段文章
下面的是片断 已经显示了IP connected!
但是显示读到的bytes固定在1448上
(当发送的bytes大于1448时,一直显示1448bytes
发送的小于1448时,显示正常的bytes数)
我用telnet登录服务器端有正常的传送
基本确定服务器没有问题
BUFLEN 10240
char recmsg[BUFLEN];
[code]
printf("%s connected! \n",argv[1]);
    n=read(sockfd,recmsg,BUFLEN);//
// n=recv(sockfd,recmsg,BUFLEN,0);
    if(n>0){
        recmsg[n]=0;
        printf("recived %u bytes\n",n);
        fp=creat("./rec.dat",0600);
        if(fp==-1){//
       return -1;
        }
        tmp=write(fp,recmsg,n);
        if(tmp==-1){
        printf("write file error!\n");
        return -1;
        }
        printf("writed %u bytes\n",tmp);
        close(fp);
//      printf("resived :%s",recmsg);
[code][/code]
发表于 2004-9-16 14:30:31 | 显示全部楼层
内核socket缓冲限制
回复

使用道具 举报

 楼主| 发表于 2004-9-16 16:56:17 | 显示全部楼层
有限制的话 那么read的手册应该给buffer的长度有个提醒啊
我看到的 它只对用户buffer有关系呀
回复

使用道具 举报

发表于 2004-9-17 10:07:14 | 显示全部楼层
你搜搜/usr/include下的SO_RCVBUF,好像就是这个限制的。对网络数据的read和普通的read在这儿不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 11:28 , Processed in 0.051540 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表