Haskell网络SockAddrInet使用哪个字节序?

sin*_*nan 10 ip haskell network-programming

哈斯克尔network小号HostAddress说:"网络字节顺序",在它的文档

但是,如果我以网络字节顺序(big-endian)传递地址,它的show instance打印错误的地址:

Prelude Network.Socket> :m + Network.Socket Data.Bits 
Prelude Network.Socket Data.Bits> SockAddrInet (fromInteger 50) (192 `shiftL` 24)
0.0.0.192:50
Prelude Network.Socket Data.Bits> 
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?为什么它会打印小端的东西?我应该以大端还是小端格式传递IP地址?

Eri*_*ikR 1

看起来生成 IPv4 地址的常见方法是使用Socket.inet_addr,例如:

do x <- inet_addr "192.0.0.0"; return $ SockAddrInet 50 x
Run Code Online (Sandbox Code Playgroud)

或者,等效地:

inet_addr "192.0.0.0" >>= (return . SockAddrInet 50)
Run Code Online (Sandbox Code Playgroud)