Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di mr.and
    Registrato dal
    Dec 2008
    Messaggi
    51

    [C]Conversione indirizzo internet in 6 decimali

    Salve,
    Devo inviare il mio indirizzo ip e porta ad un host remoto tramite connessione TCP/IP,il quale mi richiede questa codifica di tali informazioni:
    indirizzo internet (IP e porta) devono essere codificati in una stringa dove tale indirizzo è codificato in 6 valori decimali separati da virgola, adatti all'invio su network.

    ovvero l'indirizzo mi serve nella forma: h1,h2,h3,h4,p1,p2

    dove ogni valore hx o px è a 8 bit(devo inserirli in una stringa).

    ad esempio ho:

    char* add="127.0.0.1";
    int port=20;

    come faccio da questi ad ottenere una stringa che rispetti i criteri suddetti??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito cosa e' p2
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di mr.and
    Registrato dal
    Dec 2008
    Messaggi
    51
    In pratica dal numero di porta devo ottenere due valori decimali a 8 bit(p1 e p2), anche se non ho capito come :master: ...speravo ci fosse qualcuno esperto di protocolli di rete che potesse darmi una mano.

    Per l'indirizzo IP non ci sono problemi in quanto ognuno dei valori entra in un char (che è da 8 bit) poichè possono assumere massimo come valore 255 ognuno.Però il numero di porta può essere anche molto più grande di 255, e quindi andrebbe diviso in due valori da 8 bit ciascuno, ma non so come, non so se andrebbero messi i bit più significativi in p1 e i rimanenti in p2,ad esempio,o cos'altro.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ah ... chiaro ... la porta e' a 16 bit e devi indicare gli 8 bit (H o L? prima) e poi gli altri 8 ...

    Utilizza la funzione sprintf per formare la stringa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di mr.and
    Registrato dal
    Dec 2008
    Messaggi
    51
    Immagino vadano inseriti prima i bit più significativi,almeno sembra questa la linea tenuta nel protocollo,anche se non ho trovato nessuna indicazione diretta.

    quindi potrei fare così:

    char* risp=malloc(sizeof(char)*24);
    uint16_t port=20;
    uint8_t hi=port >> 8;
    uint8_t lo=port;
    sprintf(risp,"Indirizzo (%hhu,%hhu,%hhu,%hhu,%hhu,%hhu)",127,0,0,1,hi,lo);

    sarebbe corretto?La possiamo lasciare per chi leggerà questo post in futuro ?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.