socket问题3

socket问题3

当你用read函数从socket套接缓冲区读数据时。
如for(;;){
n=read(fd,buf,225);
if(n==0){
printf("client close\n");
break;}
else if(n<0&&errno!=EINTR)
continue;
else if(n<0)
{
perror("read error\n");
break;
                                                }
printf("%d\n",n);
printf("%s\n",buf);
}
这段简单的代码的输出结果中,你会看到不论n是多少,buf的大小总是225。
请问这是啥原因????      
。。。。。
accept(listen_fd,NULL,NULL);
if((accept_fd<0)&&(errno==EINTR))
{
              printf("Accept Error:%s\n\a",strerror(errno));
                continue;
}
while(n=read(accept_fd,buffer,1024)!=0)
if(n==0){
printf("client close\n");
break;}
else if(n<0&&errno!=EINTR)
continue;
else if(n<0)
{
perror("read error\n");
break;
}
buff[n]='\0';
printf("%d\n",n);
printf("%s\n",buf);
}      
即使你把buf该成很大。。你每次接受的数据不能有你控制用read()函数。

而且即使几实际接受的数据有时比你buf小。。但是你查看buf缓冲区的是后。。他的大小仍然是buf的大小