Socket大缓存接收小文件的问题
我在linux下使用socket传输文件
以下代码,在传输大文件时基本没有问题,但是当文件长度小于buf大小时将接收到无意义字符
定义
#define MAX 1024;char buf[MAX];
memset(buf, 0x00, sizeof(buf)); while((fread(buf, sizeof(char), MAX, outfp)) != 0) { if((fileBytes = send(clientfd, buf, sizeof(buf), 0)) == -1) { perror("fail to send datas\n"); exit(1); } } memset(buf, 0x00, sizeof(buf)); locallen = 0; while((fileBytes = recv(sockfd, buf, sizeof(buf), 0)) && (locallen <= recvlen)) { //locallen是已接收到文件长度,recvlen是服务器端文件长度 if(fileBytes == -1) { perror("fail to receive datas\n"); exit(1); } locallen += fileBytes; printf("%ld\t", locallen); fwrite(buf, sizeof(char), MAX, infp); }