Cでは作業コードがありましたが、なぜ機能するのか分かりませんでしたので、実際に何が起こっているのかを実際に理解できるように書き直しを開始しました。recv()の出力を保存するには?
これまでのところとても良い!私は書き直し、90%は今起こっていることすべてを理解している。しかし、問題は、recv
(databff
)で受信したデータチャンクを私の事前に割り当てられたバッファ(htmlbff
)に格納する方法がわかりません。
次のコード(など、それだけで基本を含んでいるので、例えばなしメモリの再割り当て、私はかなりこれを削っていることに注意してくださいまたは保護を漏らす...)考えてみましょう:あれば(そう
#define BUFFERSIZE 4096
#define MAXDATASIZE 256
char *htmlbff, databff[MAXDATASIZE];
int c, i = BUFFERSIZE, q = 0;
if(!(htmlbff = malloc(i)))
{
printf("\nError! Memory allocation failed!");
return 0x00;
}
while((c = recv(sock, databff, MAXDATASIZE, 0)) > 0)
{
/*memory checks stripped out since they are irrelevent for this post*/
/*store data to the appropriate area in htmlbff*/
q += c;
}
を私はこの権利を実行していると思います)。c
は、現在のデータチャンクのサイズです。q
は、これまでに受信したデータの総量です(q
は、ループが繰り返されるたびにc
だけインクリメントされます)。現時点では、私はメモリ処理のためにq
を使用していますが(誰かが不思議に思っていた場合に備えて)、この問題の解決策にも目的があると私は信じています。
いずれにせよ、私が求めている質問は、2番目のコメントです。 recvのデータをhtmlbff
に正しく保存するにはどうすればよいですか?
を呼び出します。私は今、バッファを使用してスキップし、htmlbffに直接書き込むことができるので、これは最も有用であることがわかりました。 –