Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 26 su 26
  1. #21
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    Dunque nuova situazione divertente.

    Inserendo un if(ric==-1) break; quello che ottengo sono 2 cose:

    1. Se metto un breakpoint all'interno del while, lui va avanti fino a quando conta vale 1000000 e poi esce (per colpa dell'if però non per colpa del while, quindi esattamente come prima).
    Ovviamente all'uscita dal ciclo conta vale 1000000

    2. Se metto un breakpoint non dentro al ciclo, ma subito dopo, per qualche motivo invece esce prima, quindi conta non vale 1000000, anzi spesso vale solo poche migliaia tipo 24000.

    Ma ora mi chiedo: ma il breakpoint mica modifica il codice, è solo un'interruzione e poi si riprende da li....sembra quasi che per leggere tutto correttamente sta benedetta recv abbia bisogno di tempo...ma come è possibile essendo una funzione bloccante??

  2. #22
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente se invii 1 milione di byte e fermi il programma con un breakpoint, non permetti a parte dei dati di arrivare dato che il buffer di ricezione non è tanto grande da mantenere tutti quei dati.

    Ecco perché ti dico che devi eseguire il debugging con delle printf messe al posto giusto per controllare i dati che servono, senza interrompere il programma.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #23
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Se sai già la dimensione dei dati che ti arriveranno usa MSG_WAITALL.
    codice:
    ric = recv(s, (char *)vettore_grande, 1000000, MSG_WAITALL);

  4. #24
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    quindi con questa lui sta in attesa fino a che non riceve esattamente 1MLN di byte...quindi non devo più preoccuparmi di fare il while giusto?

    grazie mille a entrambi

  5. #25
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    utilizzando quel metodo (MSG_WAITALL) ottengo errore 10045

    10045: Operation not supported. The attempted operation is not supported for the type of object referenced. Usually this occurs when a socket descriptor to a socket that cannot support this operation is trying to accept a connection on a datagram socket.
    leggendo un pò sul web mi è venuto un dubbio:

    Io faccio partire prima l'applicazione 1 che si mette in ascolto sul socket. Poi parte l'applicazione 2 che si connette al socket e invia il vettore di char. A quel punto l'applicazione 1 fa la recv.

    Io penso che non centri nulla, ma da qualche parte su internet ho letto che non posso fare la recv sull'applicazione che era in ascolto....può essere?

    Se non fosse quello non so perchè mi da quell'errore

  6. #26
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Stiamo parlando di socket UDP?

    Parla un po' meglio del contesto ... di che programma si tratta? A cosa serve tutto quel blocco di dati inviati ...?

    Mostra l'apertura dei socket e il codice del programma che invia e che riceve ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.