Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Terzo Anno
 Reti di Calcolatori
 Superare il blocco della recv

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
    

V I S U A L I Z Z A    D I S C U S S I O N E
capocla Inserito il - 03/04/2011 : 19:53:36
Vi posto innanzitutto il link dell'esercizio che mi da problemi
http://www.di.uniba.it/~reti/LabProRete/esercizio4.pdf

Il client quindi manda una stringa al server da mandare a due a due.
Il server riceve la stringa un carattere per volta.
Il problema, però, è che il client non sa quanti byte deve ricevere. In questo modo noi creiamo un ciclo indefinito ma il problme è che quando la stringa spedita è finita, il client si attesta nuovamente sulla funzione recv che blocca lo scorrere del programma.
A parte il passare precedentemente la lunghezza della stringa al server, c'è qualche modo per bypassare il blocco della funzione recv?
Grazie
5   U L T I M E    R I S P O S T E    (in alto le più recenti)
genius Inserito il - 05/04/2011 : 10:51:58
in c++ while o do while sono uguali... nel senso che ciclano entrambi su condizione soddisfatta ;)
capocla Inserito il - 04/04/2011 : 19:41:30
Si, scusa... mi ero confuso con la condizione del do while
genius Inserito il - 04/04/2011 : 14:29:08
messaggio != '\0'...

inoltre puoi decidere un carattere diverso da quello di terminazione delle stringhe (per esempio EOT o ETX) per essere più generico...
capocla Inserito il - 04/04/2011 : 10:40:18
In sostanza, quindi, nel client quando passo la lunghezza del messaggio da spedire al server la devo calcolare come

messaggioLen = strlen(messaggio);
messaggio[messaggioLen] = '\0';

for(i = 0; i <=messaggioLen; i+=2)
   send(sock, messaggio, 2, 0);

dove messaggioLen è un intero che rappresenta la lunghezza del messaggio, messaggio è un array di caratteri e sock è l'intero identificativo della socket nel client.

mentre nel server ci dovrebbe essere un'istruzione del tipo

while (messaggio[0] == '\0')
   byteRcvd = recv(clientSocket, messaggio, 1, 0);

dove clientSocket è l'intero identificatovo della socket del client nel server e byteRcvd sono il numero di byte ricevuti nel messaggio.

Giusto?
genius Inserito il - 04/04/2011 : 09:49:14
si con un carattere di fine trasmissione... quando ricevi il carattere di terminazione, anziché rimetterti in receive, esci dal ciclo

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,1 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000