2010-08-06 9 views
6

estoy usando UDP, en particular impulso :: :: asio ip :: :: UDP tomas de enchufe si eso ayuda?¿El impulso tiene forma portátil para usar las funciones de tipo ntohl/htonl/ntohs/htons?

¿Cuál es el archivo de cabecera?

Qué clases/cabeceras Qué necesito para manejar la red de bytes de pedido con la UDP bajo el impulso?

+0

[Esta] (http://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c/107099#107099) miradas como una solución de Boost. –

+0

¿Qué no es portátil sobre htons et al ya? –

+0

@ Steve-o. Gracias por señalar eso. Soy consciente de que la implementación es portátil. Sin embargo, no puedo encontrar un encabezado portátil. Debo incluir diferentes encabezados para Windows y para * nix como ejemplo. Así que tengo que modificar el código dependiendo de las plataformas. Probablemente crearé un encabezado y pondré directivas de preprocesador para incluir encabezados dependiendo de las plataformas. – dubnde

Respuesta

10

acaba de encontrar que es suficiente para #include <boost/asio.hpp> ya que esta tira en todas las cabeceras dependientes de plataforma y da acceso a htonl/ntohl que es exactamente lo que necesito.

Gracias a todos por las sugerencias.

2

POSIX.1-2001 estándar es <sys/types.h> & <netinet/in.h>, en Windows que tiene 2 pilas para elegir <winsock2.h> o <ws2tcpip.h> & <winsock2.h>, este último es ahora la opción preferida ya que es compatible con Unicode nombrar pero tenga en cuenta que son incompatibles.

Plataformas pre-2001 podría requerir otras cabeceras como <arpa/inet.h>.

+0

Saludos. Esto ayudará. – dubnde

6

impulso :: :: asio detalle :: :: socket_ops host_to_network_short en realce/ASIO/detalle/socket_ops.hpp

+0

¿Existe también una función en boost para intercambiar int64 o double? – Ingemar

Cuestiones relacionadas