BSD-3-Clause licensed
Maintained by Kazu Yamamoto, Evan Borden
This version can be pinned in stack with:network-,3011

Module documentation for

network Build Status Build status

To build this package using Cabal directly from git, you must run autoreconf before the usual Cabal build steps (configure/build/install). autoreconf is included in the GNU Autoconf tools. There is no need to run the configure script: the setup configure step will do this for you.

Support Policy


network’s GHC policy supports 3 stable versions. The current stable version and two previous stable versions are supported.

Hugs, JHC, UHC

network does not officially support these compilers.



  • Eensuring that accept returns a correct sockaddr for unix domain. #400
  • Avoid out of bounds writes in pokeSockAddr. #400


  • Breaking change: PortNumber originally contained Word16 in network byte order and used “deriving Ord”. This results in strange behavior on the Ord instance. Now PortNumber holds Word16 in host byte order. #347
  • Breaking change: stopping the export of the PortNum constructor in PortNumber.
  • Use bytestring == 0.10.* only.
  • Use base >= 4.7 && < 5.


  • Removing withMVar to avoid the deadlock between “accept” and “close” #330
  • “close” does not throw exceptions. A new API: “close’” throws exceptions when necessary. #337
  • Fixing the hang of lazy sendAll. #340
  • Installing NetDef.h (#334) #334


  • A new API: socketPortSafe. #319
  • Fixing a drain bug of sendAll. #320
  • Porting the new CALLCONV convention from master. #313
  • Withdrawing the deprecations of packFamily and unpackFamily. #324


  • Obsoleting the Network module.
  • Obsoleting the Network.BSD module.
  • Obsoleting APIs: MkSocket, htonl, ntohl, getPeerCred, getPeerEid, send, sendTo, recv, recvFrom, recvLen, inet_addr, inet_ntoa, isConnected, isBound, isListening, isReadable, isWritable, aNY_PORT, iNADDR_ANY, iN6ADDR_ANY, sOMAXCONN, sOL_SOCKET, sCM_RIGHTS, packFamily, unpackFamily, packSocketType
  • Do not closeFd within sendFd. #271
  • Exporting ifNameToIndex and ifIndexToName from Network.Socket.
  • New APIs: setCloseOnExecIfNeeded, getCloseOnExec and getNonBlock
  • New APIs: isUnixDomainSocketAvailable and getPeerCredential
  • socketPair, sendFd and recvFd are exported even on Windows.


  • Reverting “Do not closeFd within sendFd” #271


  • Don’t touch IPv6Only when running on OpenBSD #227
  • Do not closeFd within sendFd #271
  • Updating examples and docs.


  • Adds a function to show the defaultHints without reading their undefined fields #291
  • Improve exception error messages for getAddrInfo and getNameInfo #289
  • Deprecating SockAddrCan.


  • Zero memory of sockaddr_un if abstract socket #220

  • Improving error messages #232

  • Allow non-blocking file descriptors via setNonBlockIfNeeded #242

  • Update config.{guess,sub} to latest version #244

  • Rename my_inet_ntoa to avoid symbol conflicts #228

  • Test infrastructure improvements #219 #217 #218

  • House keeping and cleanup #238 #237


  • Reverse breaking exception change in Network.Socket.ByteString.recv #215


  • New maintainers: Evan Borden (@eborden) and Kazu Yamamoto (@kazu-yamamoto). The maintainer for a long period, Johan Tibell (@tibbe) stepped down. Thank you, Johan, for your hard work for a long time.

  • New APIs: ntohl, htonl,hostAddressToTuple{,6} and tupleToHostAddress{,6}. #210

  • Added a Read instance for PortNumber. #145

  • We only set the IPV6_V6ONLY flag to 0 for stream and datagram socket types, as opposed to all of them. This makes it possible to use ICMPv6. #180 #181

  • Work around GHC bug #12020. Socket errors no longer cause segfaults or hangs on Windows. #192

  • Various documentation improvements and the deprecated pragmas. #186 #201 #205 #206 #211

  • Various internal improvements. #193 #200


  • Regenerate configure and

  • Better detection of CAN sockets.


  • Add support for TCP_USER_TIMEOUT.

  • Don’t conditionally export the SockAddr constructors.

  • Add isSupportSockAddr to allow checking for supported address types at runtime.