我創建了從客戶端發送一個文本文件到服務器 的應用到目前爲止,我是把它作爲字符串是這樣的:使用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