2014-11-07 13 views
10

Haskell network s HostAddress nói "mạng byte lệnh" trong đó là DocumentationMạng Haskell SockAddrInet có độ bền nào để sử dụng?

Tuy nhiên, nếu tôi vượt qua địa chỉ trong thứ tự byte mạng (lớn-endian), nó hiển thị in dụ sai địa chỉ:

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> 

Is điều này dự kiến? Tại sao nó in những thứ nhỏ bé? Tôi có nên chuyển địa chỉ IP ở định dạng lớn hoặc nhỏ không?

Trả lời

1

Dường như cách phổ biến để tạo ra địa chỉ IPv4 là sử dụng Socket.inet_addr, ví dụ .:

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

Hoặc, tương đương:

inet_addr "192.0.0.0" >>= (return . SockAddrInet 50) 
Các vấn đề liên quan