2010-08-06 5 views
6

J'utilise UDP en particulier boost :: asio :: ip :: udp :: socket sockets si cela aide?Est-ce que boost utilise de manière portable les fonctions de type ntohl/htonl/ntohs/htons?

Qu'est-ce que le fichier d'en-tête?

De quels en-têtes/classes ai-je besoin pour gérer l'ordre des octets réseau avec l'UDP sous boost?

+0

[Ceci] (http://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c/107099#107099) comme une solution Boost. –

+0

Qu'est-ce qui n'est pas portable à propos de Htons et al déjà? –

+0

@ Steve-o. Merci d'avoir fait remarquer cela. Je suis conscient que la mise en œuvre est portable. Cependant, je ne peux pas trouver un en-tête portable. Je dois inclure différents en-têtes pour les fenêtres et pour * nix comme exemple. J'ai donc modifié le code en fonction des plateformes. Je vais probablement créer un en-tête et mettre des directives de préprocesseur pour inclure des en-têtes en fonction des plates-formes. – dubnde

Répondre

10

Je viens de trouver, il suffit de #include <boost/asio.hpp> que tire dans tous ce les en-têtes dépendant de la plate-forme et donne accès à htonl/ntohl qui est exactement ce dont j'ai besoin.

Merci à tous pour vos suggestions.

2

POSIX.1-2001 norme est <sys/types.h> & <netinet/in.h>, sous Windows, vous disposez de 2 piles à choisir <winsock2.h> ou <ws2tcpip.h> & <winsock2.h>, celle-ci est maintenant le choix préféré car il prend en charge les nommer Unicode mais notez qu'ils sont incompatibles.

Les plates-formes antérieures à 2001 peuvent nécessiter d'autres en-têtes tels que <arpa/inet.h>.

+0

Cheers. CA aidera. – dubnde

6

boost :: asio :: :: détails socket_ops :: host_to_network_short en boost/ASIO/détail/socket_ops.hpp

+0

y a-t-il aussi une fonction en boost pour swinter int64 ou double? – Ingemar

Questions connexes