给定以下代码
(@<) :: 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(或更早版本?)上编译
首选只有阴谋集团的方法。因为我认为检查太小而无法创建成熟的配置脚本