network软件包中HostAddressHostAddress6的文档说:

-- | Network byte order.
type HostAddress = Word32

-- | Host byte order.
type HostAddress6 = (Word32, Word32, Word32, Word32)


这个字节顺序实际上是什么意思?毕竟,Word32应该是独立于主机endianness的数字,字节序仅在对其进行反序列化时才重要。

我的目标是为IPv4或IPv6地址构造正确的SockAddr值。

似乎对于HostAddress,字节顺序在小尾数体系结构上是翻转的,因为我show $ SockAddrInet 0 0x0100007f给出了"127.0.0.1:0"。并且show $ SockAddrInet6 0 0 (0,0,0,1) 0给出了"[::1]:0,因此看来字节顺序是正确的。但是目前我没有机会在大端架构上对其进行测试。

最佳答案

Data.IP模块看起来可以解决此问题。

看一下:


toHostAddress
toHostAddress6


以及创建IPv4和IPv6值的各种方法。

07-28 02:56