阅读该函数并指出该函数的问题void download(int sockfd, char* filename) { char buff[1024]= {0}; //1.打开文件 int fd = open(filename,O_RDONLY,1000); if(-1==fd) { printf("文件打开失败"); } //2.将文件发送给服务器 while(1){ int r= read(fd,buff,1024); if(r>0) send(sockfd,buff,r,0); else break; } }
时间: 2024-04-07 14:29:06 浏览: 106
tcp.rar_UDP recvfrom_tcp_tcp sendto_udp 函数_udp_sendto
该函数有两个问题:
1. 在打开文件时,第三个参数应该是文件的权限,而不是一个任意的值1000。
2. 在发送文件内容时,如果文件大小不是1024的整数倍,最后一次读取文件时可能会发送一些垃圾数据。应该根据实际读取的字节数来发送数据,而不是固定地发送1024字节。此外,应该在发送完所有数据后关闭文件描述符。
阅读全文