我创建了从客户端发送一个文本文件到服务器 的应用到目前为止,我是把它作为字符串是这样的:使用winsock将文件分解为块并将其作为二进制从客户端发送到服务器?
fp = fopen(filename, "r");
if (fp != NULL) {
newLen = fread(source, sizeof(char), 5000, fp);
if (newLen == 0) {
fputs("Error reading file", stderr);
} else {
source[++newLen] = '\0'; /* Just to be safe. */
}
}else{
printf("The file %s does not exist :(");
return 1;
}
fclose(fp);
send(s , source , strlen(source) , 0); //send file
但是我的教授告诉我,我必须将文件中的二进制和准备接受任何大小的文件 我想弄清楚如何以二进制文件发送文件并将其分割成大块
问题是? – alk 2015-04-01 15:53:56
如果'source'是5000'char' long,那么这个'source [newLen] ='\ 0''写入数组的末尾。 – alk 2015-04-01 15:54:49
你应该阅读man strlen()。这很糟糕也不需要,因为您已经知道有多少有效字节已被读入缓冲区。 – 2015-04-01 17:22:10