1: サーバーはファイル サイズをバッファにコピーして送信します。
snprintf(t_buf, 255, "%" PRIu32, fsize);
if(send(f_sockd, t_buf, sizeof(t_buf), 0) < 0){
perror("error on sending file size\n");
onexit(f_sockd, m_sockd, 0, 2);
}
2: クライアントはファイル サイズを受け取り、それを fsize に入れます。
if(recv(f_sockd, t_buf, sizeof(t_buf), 0) < 0){
perror("error on receiving file size");
onexit(f_sockd, 0 ,0 ,1);
}
fsize = atoi(t_buf);
----------------- 上記のコードにより、私のプログラムは完璧に動作します!
前のコードの代わりにこのコードを書くと、問題が発生します:
1: サーバーが fsize を送信します:
if(send(f_sockd, &fsize, sizeof(fsize), 0) < 0){
perror("error on sending file size\n");
onexit(f_sockd, m_sockd, 0, 2);
}
2: クライアントは fsize を受け取ります。
if(recv(f_sockd, &fsize, sizeof(fsize), 0) < 0){
perror("error on receiving file size");
onexit(f_sockd, 0, 0, 1);
}
どこuint32_t fsize;
とchar t_buf[256];
。
問題は、最初の方法ではすべてが機能しますが、2 番目の方法ではクライアントがすべてのファイルを受け取るのではなく、その一部だけを受け取ることです。このコードの何が問題になっていますか?
ありがとう!