昨日Rubyでうまくいったので、
[Ruby] 自分のIPアドレスを知る。
http://qiita.com/saltheads/items/cc49fcf2af37cb277c4f
これをHaskellに移植しました。
my_address.hs
{-# OPTIONS -Wall -Werror #-}
import Network.Socket
my_address :: IO String
my_address = withSocketsDo $ do
(serveraddr:_) <- getAddrInfo Nothing (Just "128.0.0.0") (Just "echo")
s <- socket AF_INET Datagram defaultProtocol
connect s (addrAddress serveraddr)
sockAddr <- getSocketName s
let adrs = takeWhile (/=':') $ show sockAddr
close s
return adrs
main :: IO ()
main = do a <- my_address
putStrLn a
実行結果 (Windows 7)
C:>runghc --version
runghc 7.8.3
C:>runghc my_address.hs
10.0.1.7
実行結果 (MacOS 10.9.4)
$ runghc --version
runghc 7.8.3
$ runghc my_address.hs
10.0.1.6