|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2004
Città: Roma
Messaggi: 539
|
[C++] socket recv()
stavo realizzando uno script in c++ che prende una pagina da web dopo essersi connesso... presupponendo che abbia ben fatto la prima parte del programma (almeno credo) mi chiedevo come posso immagazzinare tutto il codice-risposta che mi manda il server web...
mi spiego meglio... bytes_receved = recv(sockfd, buff, sizeof(buff)-1,0); printf("%s",buff); questa parte di codice mi stampa semplicemente la prima parte di quello che mi dovrebbe mandare (o forse mi manda) il server... ah dimenticavo la variabile buff è dichiarata: char buff[4000]={0}; qualcuno sa dirmi come faccio a ottenere tutto il codice? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Roma
Messaggi: 539
|
aggiorno..
ho modificato il codice con: do { char buff[512]={0}; bytes_receved = recv(sockfd, buff, sizeof(buff)-1,0); printf("%s",buff); } while (buff); mi stampa tutto il codice ma non esce dal ciclo... cosa ho sbagliato? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
1) Non credo che cosi funzioni buff è fuori dallo scope.
2) se la variabile buff è inizializata a {0} buff vale l'indirizzo di {0} e buff[0] == 0. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Non ho mai capito bene come si determina la fine della risposta, infatti l'header finisce con una sequenza \r\n\r\n (corrispondente al fine linea dell'ultima riga dell'header e un a capo per separare l'header dal contenuto), il corpo della pagina finisce con un solo \r\n. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Per quelllo che so io devi vedere nell'header per sapere quando finira la risposta, più precisamente "content-size:10" dove 10 sono il numero di byte dopo il doppio "\r\n"
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Dec 2006
Città: Firenze
Messaggi: 118
|
Ma quando la risposta finisce il recv() resistuisce -1!!!
__________________
Federica |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2004
Città: Roma
Messaggi: 539
|
"content-size:10" <--- questo non me lo manda nell'header...
Ma quando la risposta finisce il recv() resistuisce -1!!! <--- ho fatto un print dei recv e non da -1 ma mi restituisce 0... io ho risolto facendo: FILE *fp; fp = fopen("file.txt", "w"); while(buff) { char buff[512] = {0}; bytes_receved = recv(sockfd, buff, sizeof(buff)-1,0); if(strlen(buff) < 1) { break; } fwrite(buff, 1, strlen(buff), fp); } fclose(fp); dite che mi può dare qualche errore? può non terminarmi il programma? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2004
Città: Roma
Messaggi: 539
|
avendo creato questo file posso riuscire a lavorare come se fosse un'unica variabile usando le regex?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:13.




















