2014-11-07 12 views
10

Haskell network s HostAddress mówi "sieciowa kolejność bajtów" w to DocumentationSieć Haskell SockAddrInet z tą endianness do wykorzystania?

Jednak jeśli mijam adres w sieciowej kolejności bajtów (big-endian), to pokazać instancji wydruki niewłaściwy adres:

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> 

Czy to oczekiwano? Dlaczego drukuje rzeczy mało-endian? Czy powinienem podać adres IP w dużym lub małym formacie endian?

Odpowiedz

1

Wygląda na wspólnej drodze do generowania adresów IPv4 jest użycie Socket.inet_addr, np .:

do x <- inet_addr "192.0.0.0"; return $ SockAddrInet 50 x 

Lub równoważnie:

inet_addr "192.0.0.0" >>= (return . SockAddrInet 50) 
Powiązane problemy