Подтвердить что ты не робот

Haskell сеть SockAddrInet, какой энсинус использовать?

Haskell network HostAddress говорит о "сетевом порядке байта" в нем Документация

Однако, если я передаю адрес в сетевом порядке байтов (big-endian), он показывает, что экземпляр печатает неправильный адрес:

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> 

Ожидается ли это? Почему это печатает вещи мало-endian? Должен ли я передавать IP-адрес в формате большого или меньшего размера?

4b9b3361

Ответ 1

Похоже, что общий способ генерации IPv4-адресов - использовать Socket.inet_addr, например:

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

Или, что эквивалентно:

inet_addr "192.0.0.0" >>= (return . SockAddrInet 50)