嗨,我寫了一個服務器應用程序,它接受通常是文件名的客戶端的名稱。它打開文件,將內容讀入緩衝區,然後使用send()
通過以太網傳輸緩衝區。但問題出現在所有字節都沒有被成功接收的客戶端。我只收到我發送的一部分內容。如何使用套接字apis發送和接收字節?
供您參考,下面是服務器端的代碼片段:
服務器:
fp = fopen(filename,"r+");
strcpy(str,"");
fseek(fp, 0L, SEEK_END);
size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
fread(str, size, 1,fp);
fclose(fp);
printf("Size of the file is : %d\n",size);
sprintf(filename, "%d", size);
n = send(nsd, filename, strlen(filename), 0);
while(size > 0){
n = send(nsd, str, strlen(str), 0);
printf("%d bytes sent successfully\n",n);
if(n == 0) break;
sentbytes = sentbytes + n;
size = size - sentbytes;
}
請幫我寫客戶端app.I我目前困惑如何去寫它。我是否將recv()
部分放在while(1)
循環中,以便客戶端繼續運行,直到所有字節都已成功接收爲止?
你用什麼樣的插座?它是一個UDP套接字?如果是這種情況,你應該迎合丟包和轉發...或者,你可以去TCP ... – user1055604
這是我使用的TCP套接字... – phoenix