Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    62

    [C] problemi con winsock

    Ciao,
    ho un problema con un programma che sto realizzando; questo software utilizza 2 socket, deve "tenerli d' occhio" perche' appena si presentano dei dati deve essere pronto a riceverli; guardando nella documentazione di winsock ho notato la funzione select(); che mi mantiene il programma in idle senza spreco di risorse quando non ci sono dati da ricevere e quando si presenta qualcosa ad uno dei 2 socket, questa funzione libera il programma e mi da' come output il numero (quantitativo) di socket con dati pronti ad essere letti.

    MSDN : The select function returns the total number of socket handles that are ready and contained in the fd_set structures

    Il mio problema e' sapere QUALE dei 2 socket presenti nella struttura fd_set ha dei dati pronti per essere letti tramite recv(); e non riesco a capire come fare...


    Grazie delle eventuali risposte !

  2. #2
    Esiste la macro FD_ISSET(int fd, fd_set *set)


  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    62
    grazie 1000 !!! mi hai salvato



  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    62
    Ciao a tutti, ho qualche altra domanda e le pongo qui dato che il post mi sembra abbastanza inerente :


    Ho un socket del tipo SOCK_STREAM, quindi i dati vengono trattati come un flusso...
    Usando alcuni software come WireShark ( Sniffer ) ho notato che i dati in arrivo vengono visti dei pacchetti, mi chiedo come fare a riconoscere l' inizio o la fine di un pacchetto utilizzando dei dati forniti dalla funzione recv(); , da quel che ho capito infatti se arrivano ( esempio ) 2 pacchetti e solo dopo l' arrivo vado a chiamare la funzione recv() quest' ultima mette in un vettore buffer i 2 pacchetti, uno dietro l' altro.

    Ho detto qualcosa di sbagliato ? Consigli su come posso fare ?


    Grazie.

  5. #5
    Devi conoscere il protocollo TCP, e la dimensione di ogni pacchetto.
    Poi scrivi una struttura apposita; e leggerai il flusso di byte scrivendolo dentro questa struttura.
    Così potrai accedere direttamente ai vari campi del pacchetto TCP.


  6. #6
    Dimenticavo, che esistono già delle strutture apposite.
    E devi utilizzare i socket RAW.


  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    62
    Cerco di studiarmi questo tipo di socket

    Thanks

  8. #8

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.