0
嘗試讀取塊中的文件並通過TCP連接發送每個塊。當讀取/發送循環完成時,我發送確認消息。任何時候我的文件大於一個塊,這幾乎總是,確認消息永遠不會到達。無法分辨這是因爲它沒有被髮送或只是沒有收到。它似乎被髮送了,但我無法確定。對於小文件,這工作得很好。文件本身在所有情況下都能正確發送,但我也需要此確認消息發送。文件讀取,未收到TCP消息
任何人都可以看到爲什麼這可能會發生?
int header_size = sizeof("file,,") + sizeof(int);
int bytes_remaining, filesize;
fseek(fp1, 0L, SEEK_END);
filesize = bytes_remaining = ftell(fd);
fseek(fd, 0L, SEEK_SET);
int bytes_to_read;
if ((BUFFSIZE - header_size) < bytes_remaining) {
bytes_to_read = BUFFSIZE - header_size;
} else {
bytes_to_read = bytes_remaining;
}
while (bytes_read = fread(buffer, 1, bytes_to_read, fd) > 0) {
sprintf(message, "file,%d,%s", bytes_to_read, buffer);
send(sd, message, bytes_to_read + header_size, 0);
bytes_remaining -= bytes_to_read;
if ((BUFFSIZE - header_size) < bytes_remaining) {
bytes_to_read = BUFFSIZE - header_size;
} else {
bytes_to_read = bytes_remaining;
}
bzero(buffer, BUFFSIZE);
}
// send confirmation message
bzero(buf, 256);
sprintf(buf, "send_complete");
send(sd, buf, 256, 0);
fprintf(stdout, "complete: %s\n", buf);
您是否檢查發送的返回值? – fjc