LoginSignup
4
3

More than 5 years have passed since last update.

[Haskell] 自分のIPアドレスを知る。

Last updated at Posted at 2014-08-29

昨日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
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3