我正在尝试构建一个FTP服务器客户端。我已经写了这个函数来发送文件,但它不适用于所有文件。虽然它适用于某些文件,例如jpg,当涉及到ppt或其他文件时,它会产生问题。我正在尝试每次在ubuntu 18.04上运行的文件时发送100个字节
以前我尝试过库函数来通过套接字发送文件。但这也没有帮助。
void sendfiledata(int sockfd, char * filename) {
FILE * file;
unsigned long fileLen;
file = fopen(filename, "rb");
//Get file length
fseek(file, 0, SEEK_END);
fileLen = ftell(file);
fseek(file, 0, SEEK_SET);
long int loop = fileLen / 100;
long int remainfile = fileLen % 100;
buffer = (char * ) malloc(fileLen);
fread(buffer, fileLen, sizeof(char), file);
fclose(file);
send(sockfd, & fileLen, sizeof(int), 0);
int i = 0;
char chunk[100];
for (int j = 0; j < loop; j++) {
int k = 0;
while (i < fileLen && k < 100) {
chunk[k] = buffer[i];
i++;
k++;
}
send(sockfd, chunk, 100, 0);
}
if (remainfile > 0) {
int k = 0;
while (i < fileLen && k < remainfile) {
chunk[k] = buffer[i];
i++;
k++;
}
send(sockfd, chunk, remainfile, 0);
}
memset(filename, '\0', sizeof(filename));
}
我希望文件从一台机器完全发送到另一台机器。但这里有些文件正在运行,但并非全部。