次のコードが与えられた場合
(@<) :: Port -> IO Socket
(@<) p = do -- listen
#if !defined(IPV4ONLY)
s <- socket AF_INET6 Stream 0 =>> opt
setSocketOption s IPv6Only 0 // try_
bindSocket s $ SockAddrInet6 p 0 iN6ADDR_ANY 0
#else
s <- socket AF_INET Stream 0 =>> opt -- Windows XP does not have
setSocketOption s $ SockAddrInet p iNADDR_ANY -- a dual-stack sockets API
#endif
listen s maxListenQueue
print $ Service Listen p
return s
where opt s = mapM_ (\o -> setSocketOption s o 1) [ ReuseAddr, KeepAlive ]
設定(cabal config)時の最もクリーンで最短の方法は何ですか:
- Windows のバージョンを確認する
IPV4ONLY
Windows XP (またはそれ以前?) でコンパイルするかどうかを定義する
これを行うには、カバールのみの方法が推奨されます。チェックが小さすぎて、本格的な構成スクリプトを作成できないと思います