C Çalışma kodum vardı ama neden işe yaramadığına dair hiçbir fikrim yoktu, bu yüzden yeniden yazmaya başladım, böylece neler olduğunu anlayabileyim.Recv() çıkışı nasıl kaydedilir?
Şimdiye kadar çok iyi! Yeniden yazdım ve şu anda olan her şeyi anladığımdan% 90 eminim; Ancak sorun, önceden ayrılmış arabamıza (htmlbff
) recv
(databff
) tarafından alınan veri yığınının nasıl saklanacağı hakkında bir fikrim olmamasıdır. (Yani
#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;
}
:
(... vb, ben biraz bu soyunmuş olduğunu sadece temelleri, mesela hafıza yeniden dağıtılmasını içerir, böylece not veya koruma sızıntı) Aşağıdaki kodu düşünün Ben bu doğru yapıyorum ve şeyler olduğunu düşünüyorum sanırım) c
geçerli veri yığın boyutu ve q
şimdiye kadar alınan toplam veri miktarıdır (q
döngü her tekrarlandığında c
tarafından artırılır). Şu anda bellek kullanımı için q
kullanıyorum (kimse merak ediyordu) ama bu sorunun çözümünde de amaca sahip olacağına inanıyorum.
İstediğim soru, herhangi bir oranda ikinci yoruma ilişkin. Verileri recv'den htmlbff
'a doğru şekilde nasıl kaydederim?
çağırır. En kullanışlı olanını buldum çünkü artık arabelleği kullanarak atlayıp doğrudan htmlbff dosyasına yazabiliyorum. –