2010-08-06 6 views
6

Ich verwende UDP insbesondere boost :: asio :: ip :: udp :: socket sockets, wenn das hilft?Hat Boost portable Möglichkeit, Funktionen vom Typ ntohl/htonl/ntohs/htons zu verwenden?

Was ist die Header-Datei?

Welche Header/Klassen benötige ich, um Netzwerk-Byte-Reihenfolge mit dem UDP unter Boost zu behandeln?

+0

[Dies] (http://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c/107099#107099) sieht wie eine Boost-Lösung. –

+0

Was ist nicht schon über Htons et al. –

+0

@ Steve-o. Danke, dass du darauf hingewiesen hast. Ich bin mir bewusst, dass die Implementierung portabel ist. Ich kann jedoch keinen tragbaren Header finden. Ich muss verschiedene Header für Windows und für * nix als ein Beispiel einschließen. Also muss ich den Code abhängig von den Plattformen ändern. Ich werde wahrscheinlich einen Header erstellen und Präprozessor-Direktiven einfügen, um Header je nach Plattform einzuschließen. – dubnde

Antwort

10

fand es einfach zu #include <boost/asio.hpp> genug ist, da dies die Plattform abhängig Header in alle zieht und gibt Zugang zu htonl/ntohl was genau ich brauche.

Vielen Dank für die Vorschläge.

2

POSIX.1-2001 Standard ist <sys/types.h> & <netinet/in.h>, auf Windows Sie haben 2 Stapel von <winsock2.h> oder <ws2tcpip.h> & <winsock2.h> zu wählen, letztere ist jetzt die bevorzugte Wahl, da sie unterstützt Unicode Benennung aber beachten, dass sie nicht kompatibel sind.

Plattformen vor 2001 erfordern möglicherweise andere Header wie <arpa/inet.h>.

+0

Prost. Das wird helfen. – dubnde

6

boost :: asio :: Details :: socket_ops :: host_to_network_short in boost/Asio/detail/socket_ops.hpp

+0

gibt es auch eine Funktion in Boost für den Austausch von Int64 oder Double? – Ingemar

Verwandte Themen