这是我想要读取文件的函数代码:
int sendByByte(int filed,int sockfd,int filesize)
{
int i=0;
int sent=0;
char buf[BUFSIZE];
while(i<filesize)
{
printf("fd is : %d\n",filed);
printf("i: %d\n",i);
int byte_read=read(filed,buf,BUFSIZE);
if(byte_read == -1)
{
printf("MOSHKEL dar read\n");
return -1;
}
int byte_send=send(sockfd,buf,byte_read,0);
if(byte_send==-1)
{
printf("MOSHKEL dar send\n");
return -1;
}
close(filed);
i+=byte_read;
sent+=byte_read;
}
return sent;
}
问题是当i=0
工作并读取文件但read()
返回-1时。
代码有什么问题?
socketfd
=&gt;服务器的套接字filed
=&gt;文件描述符我确定文件描述符有效。
答案 0 :(得分:4)
在第一次迭代后close(filed)
(第22行),导致所有进一步的读取失败。
将close
调用移出循环,甚至更好:让调用者关闭文件描述符,因为他打开了它。