2010-08-06 3 views
6

Sto usando UDP in particolare boost :: asio :: ip :: udp :: socket socket se questo aiuta?Il boost ha un modo portatile per usare le funzioni di tipo ntohl/htonl/ntohs/htons?

Che cos'è il file di intestazione?

Quali intestazioni/classi è necessario gestire l'ordinamento dei byte di rete con UDP in modalità boost?

+0

[questo] (http://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c/107099#107099) sguardi come una soluzione Boost. –

+0

Cosa non è già disponibile su htons et al? –

+0

@ Steve-o. Grazie per la segnalazione. Sono consapevole che l'implementazione è portatile. Tuttavia, non riesco a trovare un'intestazione portatile. Devo includere diverse intestazioni per Windows e per * nix come esempio. Quindi ho modificato il codice in base alle piattaforme. Probabilmente creerò un'intestazione e inserirò le direttive del preprocessore per includere intestazioni a seconda delle piattaforme. – dubnde

risposta

10

appena trovato è sufficiente #include <boost/asio.hpp> come questo tira in tutte le piattaforme intestazioni dipendenti e dà accesso a htonl/ntohl che è esattamente quello che mi serve.

Grazie a tutti per i suggerimenti.

2

POSIX.1-2001 standard è di <sys/types.h> & <netinet/in.h>, su Windows si hanno 2 pile da scegliere <winsock2.h> o <ws2tcpip.h> & <winsock2.h>, quest'ultimo è ora la scelta preferita in quanto supporta Unicode denominazione ma nota che sono incompatibili.

Le piattaforme prima del 2001 potrebbero richiedere altre intestazioni come <arpa/inet.h>.

+0

Cheers. Questo aiuterà. – dubnde

6

boost :: ASIO :: dettaglio :: :: socket_ops host_to_network_short in boost/ASIO/dettaglio/socket_ops.hpp

+0

c'è anche una funzione in boost per lo scambio di int64 o double? – Ingemar