Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] - Problema con Raw Sockets

    Ciao a tutti,
    sto realizzando un progettino che effettua TCP/IP Tunneling utilizzando le Raw Sockets su piattaforma UNIX in linguaggio C.
    Io creo "manualmente" gli header TCP e IP mettendo i vari byte in vettori di char che poi voglio concatenare al messaggio vero e proprio (una stringa) e spedire via raw socket.
    Ho il seguente problema, quando vado a scrivere negli header TCP e IP dei valori esadecimali '0x00' oppure il carattere '0' le funzioni che utilizzo per creare la stringa da inviare li interpretano come terminatori quindi il programma: si blocca se uso una memcpy oppure mi compatta gli spazi null se uso strcpy o strcat..
    Quindi l'entità che riceve il pacchetto lo riceve privato dei caratteri 0x00 che invece sono fondamentali nella costruzione dei pacchetti TCP e IP.
    La mia domanda è: c'è il modo di creare una stringa o vettore di caratteri contenente dei caratteri 0x00 o '0' in modo che l'applicazione non li interpreti come terminatori?
    Mi conviene utilizzare un altro tipo di dato per memorizzare le informazioni?

    Grazie

    Ciao

    Giova

  2. #2
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    mmm...

    Semplice, tratta l'header e la stringa come due oggetti separati e poi li invii.
    legge l'header, lo verifica e poi legge la stringa.

    codice:
    char *buffer[SIZE];
    char *header, *string;
    int fd;
    
    memset(buffer, 0, sizeof(buffer));
    header = buffer;
    string = buffer + HEADER-LENGTH;
    
    /* crea socket */
    ...
    /* lavora sull'header */
    memcpy(header, X, X);
    /* lavora sulla stringa */
    memcpy(string, X, X);
    /* invia */
    write(fd, buffer, sizeof(buffer));

  3. #3
    Grazie mille

    adesso funziona

    Ciao

    Giovanni

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.