こんにちは、通常はファイル名であるクライアントからの名前を受け入れるサーバーアプリケーションを作成しました。ファイルを開き、内容をバッファーに読み取り、使用してイーサネット経由でバッファーを送信します。send()
しかし、クライアント側で問題が発生しますここで、すべてのバイトが正常に受信されません。送信したものの一部しか受信しません。
参考までに、サーバー側のコード スニペットを次に示します。
サーバー:
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;
}
クライアント アプリの作成を手伝ってください。現在、どのように作成すればよいか混乱しています。すべてのバイトが正常に受信されるまでクライアントが実行し続けるように、このrecv()
部分をループに配置しますか?while(1)