日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题

發布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面的代碼適用于最后一個數據包包含的數據少于最大長度的較小文件,該功能通過顯示接收到的文件正確退出。 如果傳輸的文件的最后一個數據包或緩沖區包含與我的情況下接收緩沖區陣列512的大小相同的確切數量。然后程序繼續等待下一個數據包。客戶端服務器在較大的文件的c文件傳輸問題

在我的情況下,所有尺寸倍數為512的文件都卡住了。 下面是代碼:用于接收

客戶端代碼:

void receiveFile() {

printf("inside receiveFile method\n");

char* fr_name = "final.txt";

int i;

FILE *fr = fopen(fr_name, "a");

int LENGTH = 512;

int fileLength=0;

char revbuf[LENGTH];

if (fr == NULL) {

printf("File %s Cannot be opened.\n", fr_name);

} else {

printf("starting to write the file\n");

bzero(revbuf, LENGTH);

int fr_block_sz = 0;

i=0;

while ((fr_block_sz = recv(4, revbuf, LENGTH, 0)) > 0) {

fileLength+=fr_block_sz;

i++;

printf("Received buffer: %d, %d\n",fr_block_sz,i);

int write_sz = fwrite(revbuf, sizeof(char), fr_block_sz, fr);

if (write_sz < fr_block_sz) {

error("File write failed.\n");

}

bzero(revbuf, LENGTH);

if (fr_block_sz == 0 || fr_block_sz != 512) {

break;

}

}

if (fr_block_sz < 0) {

if (errno == EAGAIN) {

printf("recv() timed out.\n");

} else {

fprintf(stderr, "recv() failed due to errno = %d\n", errno);

}

}

printf("FILE RECEIVED....Total Bytes received:%d \n",fileLength);

}

fclose(fr);

}

服務器,用于接收文件:

void sendFile() {

printf("inside sendFile method\n");

char* fs_name = "mb.txt";

int LENGTH = 512;

int sfileLength=0;

char sdbuf[LENGTH];

int i=0;

printf("[Client] Sending %s to the Server... \n", fs_name);

FILE *fs = fopen(fs_name , "r");

if (fs == NULL) {

perror("ERROR: File not found.\n");

exit(1);

}

bzero(sdbuf, LENGTH);

int fs_block_sz;

while ((fs_block_sz = fread(sdbuf, sizeof(char), LENGTH, fs)) > 0) {

i++;

printf("Sent:%d , %d \n", fs_block_sz,i);

sfileLength+=fs_block_sz;

if (send(4, sdbuf, fs_block_sz, 0) < 0) {

fprintf(stderr, "ERROR: Failed to send file %s. (errno = %d)\n",

fs_name, errno);

break;

}

bzero(sdbuf, LENGTH);

}

printf("File sent.... Total Bytes:%d\n", sfileLength);

fclose(fs);

}

2013-09-28

sean

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。