S/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.  Safe-Inferred +2/0123/012/0123None +24!Host byte order.Network byte order.{The existence of a constructor does not necessarily imply that that socket address type is supported on your system: see d. Use the Num, instance (i.e. use a literal) to create a  PortNumber value with the correct network-byte-ordering. You should not use the PortNum constructor. It will be removed in the next release. Address families.]A constructor being present here does not mean it is supported by the operating system: see b.N Socket Types.rThe existence of a constructor does not necessarily imply that that socket type is supported on your system: see _.OSOCK_SEQPACKETPSOCK_RDMQSOCK_RAWR SOCK_DGRAMS SOCK_STREAMT)0, used in getAddrInfo hints, for exampleUThe status of the socket as determined by this libraryA, not necessarily reflecting the state of the connection itself.For example, the V status is applied when the close function is called.VClosed was closed by closeW Is now a Handle (via socketToHandle), don't touchXConnected or accepted, via connect or acceptYListening, via listenZ Bound, via bind[!Newly created, unconnected socket]3Represents a socket. The fields are, respectively:File descriptor Socket family Socket typeProtocol number Status flagIf you are calling the ^; constructor directly you should ensure you have called  ._TDoes the SOCK_ constant corresponding to the given SocketType exist on this system?4>Find the SOCK_ constant corresponding to the SocketType value.5Try packSocketType' on the SocketType, if it fails throw an error with message starting "Network.Socket." ++ the String parameter6}Try unpackSocketType on the CInt, if it fails throw an error with message starting "Network.Socket." ++ the String parameterbNDoes the AF_ constant corresponding to the given family exist on this system?d4Is the socket address type supported on this system?e;Computes the storage requirements (in bytes) of the given . This function differs from 7$ in that the value of the argument is used.f=Computes the storage requirements (in bytes) required for a  with the given  .gUse a + with a function requiring a pointer to a  and the length of that .h Create a new 3 for use with a function requiring a pointer to a  and the length of that .iWrite the given  to the given memory location.jRead a  from the given memory location.kZero a structure.8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^9:;<=>?@_4`5A6abBcCDdefghijEFGkHIJKLMNOPu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^<=>?@_4`5A6abcdefghijk48  BMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  NTSRQPOU[ZYXWV\]^9:;<=>?@_4`5A6abBcCDdefghijEFGkHIJKLMNOP"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableNone +2 l Throw an QQ corresponding to the current socket error if the IO action returns a result of -1o, but retries in case of an interrupted operation. Discards the result of the IO action after error handling.m Throw an QQ corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation. Checks for operations that would block and executes an alternative action before retrying in that case.n Throw an QQ corresponding to the current socket error if the IO action returns a result of -13, but retries in case of an interrupted operation.o Throw an QQ corresponding to the current socket error if the IO action returns a result of -1>. Discards the result of the IO action after error handling.p Throw an Q+ corresponding to the current socket error.qLike p0, but the error code is supplied as an argument.?On Windows, do not use errno. Use a system error code instead.rLike n , but if the action fails with  EWOULDBLOCKB or similar, wait for the socket to be read-ready, and try again.sLike n , but if the action fails with  EWOULDBLOCKC or similar, wait for the socket to be write-ready, and try again.tWith older versions of the networkZ library on Windows operating systems, the networking subsystem must be initialised using t2 before any networking operations can be used. eg. main = withSocketsDo $ do {...}It is fine to nest calls to t-, and to perform networking operations after t has returned.In newer versions of the network& library it is only necessary to call t if you are calling the ^u constructor directly. However, for compatibility with older versions on Windows, it is good practice to always call t (it's very cheap). l#textual description of the locationthe R operation to be executedm#textual description of the locationFaction to execute before retrying if an immediate retry would blockthe R operation to be executedn#textual description of the locationthe R operation to be executedo#textual description of the locationthe R operation to be executedp)textual description of the error locationqrst^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMefghijklmnopqrst^ jiefgh MLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  pqonlmrstk lmnopqrst"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableNone +2MD-Flags that control the querying behaviour of .Socket options for use with  and .iThe existence of a constructor does not imply that the relevant option is supported on your system: see  IPV6_V6ONLYTCP_USER_TIMEOUTSO_USELOOPBACK SO_SNDTIMEO SO_RCVTIMEO SO_SNDLOWAT SO_RCVLOWAT SO_REUSEPORT SO_LINGERTCP_CORK TCP_NODELAY TCP_MAXSEGIP_TTL SO_OOBINLINE SO_KEEPALIVE SO_RCVBUF SO_SNDBUF SO_BROADCAST SO_DONTROUTESO_ERRORSO_TYPE SO_REUSEADDRSO_DEBUGEither a host name e.g.,  "haskell.org"i or a numeric host address string consisting of a dotted decimal IPv4 address or an IPv6 address e.g.,  "192.168.0.1".1This is the default protocol for a given service.uCreate a new socket using the given address family, socket type and protocol number. The address family is usually K, J, or L. The socket type is usually S or R". The protocol number is usually . If J is used, the V socket option is set to 0 so that both IPv4 and IPv6 can be handled with one socket.Build a pair of connected socket objects using the given address family, socket type, and protocol number. Address family, socket type, and protocol number are as for the % function above. Availability: Unix.S>Set the socket to nonblocking, if applicable to this platform.KBind the socket to an address. The socket must not already be bound. The   passed to bind% must be the same as that passed to . If the special port number @ is passed then the system assigns the next available use port.&Connect to a remote socket at address.Listen for connections made to the socket. The second argument specifies the maximum number of queued connections and should be at least 1; the maximum value is system-dependent (usually 5).yAccept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where connP is a new socket object usable to send and receive data on the connection, and addressH is the address bound to the socket on the other end of the connection.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.TReceive data from the socket. The socket need not be in a connected state. Returns (bytes, nbytes, address) where bytes is a String of length nbytes% representing the data received and address is a 1 representing the address of the sending socket.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Receive data from the socket, writing it into buffer instead of creating a new string. The socket need not be in a connected state. Returns (nbytes, address) where nbytes& is the number of bytes received and address is a 1 representing the address of the sending socket.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Send data to the socket. The socket must be connected to a remote socket. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.Send data to the socket. The socket must be connected to a remote socket. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the message is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.}Considering hardware and network realities, the maximum number of bytes to receive should be a small power of 2, e.g., 4096.gFor TCP sockets, a zero length return value means the peer has closed its half side of the connection.Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the message is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.}Considering hardware and network realities, the maximum number of bytes to receive should be a small power of 2, e.g., 4096.gFor TCP sockets, a zero length return value means the peer has closed its half side of the connection. Does the  exist on this system?TFor a socket option, return Just (level, value) where level is the corresponding C option level constant (e.g. SOL_SOCKET) and value is the option constant itself (e.g. SO_DEBUG) If either constant does not exist, return Nothing.UReturn the option level and option value if they exist, otherwise throw an error that begins "Network.Socket." ++ the String parameterpSet a socket option that expects an Int value. There is currently no API to set e.g. the timeval socket optionsnGet a socket option that gives an Int value. There is currently no API to get e.g. the timeval socket options?Returns the processID, userID and groupID of the socket's peer.Only available on platforms that support SO_PEERCRED or GETPEEREID(3) on domain sockets. GETPEEREID(3) returns userID and groupID. processID is always 0.The IPv4 wild card address.The IPv6 wild card address.This is the value of SOMAXCONN, typically 128. 128 is good enough for normal network servers but is too small for high performance servers.Shut down one or both halves of the connection, depending on the second argument to the function. If the second argument is ., further receives are disallowed. If it is +, further sends are disallowed. If it is ,, further sends and receives are disallowed.Close the socket. All future operations on the socket object will fail. The remote end will receive no more data (after queued data is flushed).Determines whether  has been used on the ] . This does not| indicate any status about the socket beyond this. If the socket has been closed remotely, this function can still return V.Turns a Socket into an W1. By default, the new handle is unbuffered. Use X to change the buffering.Note that since a W} is automatically closed by a finalizer when it is no longer referenced, you should avoid doing any more operations on the ] after calling . To close the ] after , call Y on the W.ZPack a list of values into a bitmask. The possible mappings from value to bit-to-set are given as the first argument. We assume that each value can cause exactly one bit to be set; unpackBits will break if this property is not true.['Unpack a bitmask into a list of values.Indicate whether the given & will have any effect on this system.&Default hints for address lookup with . The values of the  and  fields are \, and are never inspected by .>Resolve a host or service name to one or more addresses. The {+ values that this function returns contain ' values that you can pass directly to  or .^This function is protocol independent. It can return both IPv4 and IPv6 address information.The { argument specifies the preferred query behaviour, socket options, or protocol. You can override these conveniently using Haskell's record update syntax on , for example as follows: G myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }  Values for }? control query behaviour. The supported flags are as follows:  AI_PASSIVEIf no 5 value is provided, the network address in each 4 will be left as a "wild card", i.e. as either  or \. This is useful for server applications that will accept connections from any client. AI_CANONNAMEThe " field of the first returned {/ will contain the "canonical name" of the host.AI_NUMERICHOSTThe  argument must_ be a numeric address in string form, and network name lookups will not be attempted.Note: Although the following flags are required by RFC 3493, they may not have an effect on all platforms, because the underlying network stack may not support them. To see whether a flag from the list below will have any effect, call . AI_NUMERICSERVThe  argument must[ be a port number in string form, and service name lookups will not be attempted. AI_ADDRCONFIGThe list of returned { values will only contain IPv4 addresses if the local system has at least one IPv4 interface configured, and likewise for IPv6. AI_V4MAPPEDwIf an IPv6 lookup is performed, and no IPv6 addresses are found, IPv6-mapped IPv4 addresses will be returned.AI_ALLIf e is specified, return all matching IPv6 and IPv4 addresses. Otherwise, this flag has no effect.You must provide a ] value for at least one of the  or  arguments.  can be either a numeric network address (dotted quad for IPv4, colon-separated hex for IPv6) or a hostname. In the latter case, its addresses will be looked up unless 3 is specified as a hint. If you do not provide a  value and do not set a as a hint, network addresses in the result will contain the address of the loopback interface.If the query fails, this function throws an IO exception instead of returning an empty list. Otherwise, it returns a non-empty list of { values.There are several reasons why a query might result in several values. For example, the queried-for host could be multihomed, or the service might be available via several protocols.HNote: the order of arguments is slightly different to that defined for  getaddrinfo in RFC 2553. The {; parameter comes first to make partial application easier. Example: " let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] } addrs <- getAddrInfo (Just hints) (Just "www.haskell.org") (Just "http") let addr = head addrs sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr) connect sock (addrAddress addr) UResolve an address to a host or service name. This function is protocol independent. The list of uG values controls query behaviour. The supported flags are as follows:  NI_NOFQDNCIf a host is local, return only the hostname part of the FQDN.NI_NUMERICHOSTThe name of the host is not looked up. Instead, a numeric representation of the host's address is returned. For an IPv4 address, this will be a dotted-quad string. For IPv6, it will be colon-separated hexadecimal.NI_NUMERICSERVrThe name of the service is not looked up. Instead, a numeric representation of the service is returned. NI_NAMEREQD@If the hostname cannot be looked up, an IO error is thrown.NI_DGRAMResolve a datagram-based service name. This is required only for the few protocols that have different port numbers for their datagram-based versions than for their stream-based versions.kHostname and service name lookups can be expensive. You can specify which lookups to perform via the two ^! arguments. If one of these is _9, the corresponding value in the returned tuple will be `", and no lookup will be performed.sIf a host or service's name cannot be looked up, then the numeric form of the address or service will be returned.9If the query fails, this function throws an IO exception. Example: : (hostName, _) <- getNameInfo [] True False myAddress Deprecated alias for .Deprecated alias for .Deprecated alias for .Deprecated alias for .Deprecated alias for .Deprecated alias for .Deprecated alias for .uvwxyz{|}~abcdefghijklmnopqrstuvwxyzS{TU|}Z[~!preferred socket type or protocolhost name to look upservice name to look up%resolved addresses, with "best" first!flags to control lookup behaviourwhether to look up a hostname!whether to look up a service namethe address to look up  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdtuvwxyz{|}~]^ MLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  bNTSRQPO_dU[ZYXWV\ {|}~uzyxwvtac`juzyxwv{|}~abcdefghijklmnopqrstuvwxyzS{TU|}Z[~ None +2 (c) Johan Tibell 2007-2010 BSD-stylejohan.tibell@gmail.comstableportableNone +2(c) Johan Tibell 2007-2010 BSD-stylejohan.tibell@gmail.comstableportableNone +2 Send data to the socket. The socket must be connected to a remote socket. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.TSend data to the socket. The socket must be connected to a remote socket. Unlike , this function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.~Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Unlike , this function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.PSend data to the socket. The socket must be in a connected state. The data is sent as if the parts have been concatenated. This function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. The data is sent as if the parts have been concatenated. This function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the message is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.}Considering hardware and network realities, the maximum number of bytes to receive should be a small power of 2, e.g., 4096.gFor TCP sockets, a zero length return value means the peer has closed its half side of the connection.VReceive data from the socket. The socket need not be in a connected state. Returns (bytes, address) where bytes is a $ representing the data received and address is a 0 representing the address of the sending socket.,Suppose we try to transmit a list of chunks cs0 via a gathering write operation and find that n bytes were sent. Then remainingChunks n cs) is list of chunks remaining to be sent.totalLength cs5 is the sum of the lengths of the chunks in the list cs.withIOVec cs f executes the computation fg, passing as argument a pair consisting of a pointer to a temporarily allocated array of pointers to / made from cs and the number of pointers ( length cs).  Unix only.Connected socket Data to sendNumber of bytes sentConnected socket Data to sendSocket Data to sendRecipient addressNumber of bytes sentSocket Data to sendRecipient addressConnected socket Data to sendSocket Data to sendRecipient addressConnected socket"Maximum number of bytes to receive Data receivedSocket"Maximum number of bytes to receive Data received and sender address None +2Connected socket Data to sendNumber of bytes sentConnected socket Data to send(c) Bryan O'Sullivan 2009 BSD-stylebos@serpentine.com experimental POSIX, GHCNone +2Receive data from the socket. The socket must be in a connected state. Data is received on demand, in chunks; each chunk will be sized to reflect the amount of data received by individual  calls.All remaining data from the socket is consumed. When there is no more data to be received, the receiving side of the socket is shut down. If there is an error and an exception is thrown, the socket is not shut down.#Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the received data is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.:If there is no more data to be received, returns an empty .Connected socket Data receivedConnected socket"Maximum number of bytes to receive Data received"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org experimental non-portableNone +2 Get service by name.Get the service given a   and . Get the   corresponding to the . Resolve a  to IPv4 address.Get a \ corresponding to the given address and family. Note that only IPv4 is currently supported.Open the network name database. The parameter specifies whether a connection is maintained open between various networkEntry calls 2Close the connection to the network name database.! Get the list of network entries.#cCalling getHostName returns the standard host name for the current processor, as set at boot time.U      !"#< \      !"#<#     \ ! "B      !"#"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableNone +2(Calling ( creates a client side socket which is connected to the given host and port. The Protocol and socket type is derived from the given port identifier. If a port number is given then the result is always an internet family S socket.)KCreates the server side socket which has been bound to the specified port. (typically 128) is specified to the listen queue. This is good enough for normal network servers but is too small for high performance servers.5To avoid the "Address already in use" problems, the . socket option is set on the listening socket.If available, the X socket option is set to 0 so that both IPv4 and IPv6 can be accepted with this socket.BIf you don't like the behavior above, please use the lower level  instead.*+Accept a connection on a socket created by ). Normal I/O operations (see  System.IO) can be used on the W- returned to communicate with the client. Notice that although you can pass any Socket to Network.accept, only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work (this shouldn't be a problem, though). When using AF_UNIX, HostName will be set to the path of the socket and PortNumber to -1.+Close the socket. All future operations on the socket object will fail. The remote end will receive no more data (after queued data is flushed).. Returns the $ associated with a given socket.$%&'()Port IdentifierListening Socket*Listening SocketTriple of: read/write W* for communicating with the client, the  of the peer socket, and the   of the remote connection.+,-.-computation to run first ("acquire resource"),computation to run last ("release resource")computation to run in-between ]t$%&'()*+,-.]$'&% t)*+(,-.$'&%()*+,-.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJK0LMNOPQRSNOT0UV0WX0WYZ[0\]0^_NO`NOa0^bcdefghijklmnopqrstuvwxyz{|}~          hjnetwork-2.6.2.0Network.Socket.InternalNetwork.SocketNetwork.Socket.ByteStringNetwork.Socket.ByteString.Lazy Network.BSDNetworkNetwork.Socket.ByteString.IOVecNetwork.Socket.Types withSocketsDo Network.Socket.ByteString.MsgHdr"Network.Socket.ByteString.Internal$Network.Socket.ByteString.Lazy.Posix HostAddress6 HostAddressSockAddr SockAddrCan SockAddrUnix SockAddrInet6 SockAddrInetScopeIDFlowInfo PortNumberPortNumFamilyAF_CAN AF_BLUETOOTH AF_WANPIPEAF_PPPOXAF_IRDA AF_ATMSVC AF_ECONETAF_ASH AF_PACKET AF_SECURITY AF_NETBEUIAF_ROSE AF_ATMPVC AF_BRIDGE AF_NETROMAF_RIFAF_RAWAF_LINKAF_ENCAPPseudo_AF_HDRCMPLTAF_ARPAF_NATM Pseudo_AF_KEYAF_ISDNAF_SIP Pseudo_AF_PIPPseudo_AF_RTIPAF_CNTAF_COIPAF_INTFAF_NDD AF_NETWAREAF_SDLAF_WANAF_CTF Pseudo_AF_XTPAF_IPX AF_GOSSIP AF_OSINETAF_AX25AF_X25 AF_NETMANAF_OSIAF_ISOAF_802AF_NIT AF_NETBIOSAF_ROUTE AF_APPLETALK AF_HYLINKAF_LATAF_DLI AF_DECnetAF_SNAAF_CCITT AF_DATAKITAF_ECMAAF_NBSAF_NSAF_CHAOSAF_PUP AF_IMPLINKAF_INET6AF_INETAF_UNIX AF_UNSPEC SocketType SeqPacketRDMRawDatagramStream NoSocketType SocketStatusClosedConvertedToHandle Connected ListeningBound NotConnectedProtocolNumberSocketMkSocketisSupportedSocketTypepackSocketType packFamilyisSupportedFamily unpackFamilyisSupportedSockAddrsizeOfSockAddrsizeOfSockAddrByFamily withSockAddrwithNewSockAddr pokeSockAddr peekSockAddr zeroMemorythrowSocketErrorIfMinus1Retry_%throwSocketErrorIfMinus1RetryMayBlockthrowSocketErrorIfMinus1RetrythrowSocketErrorIfMinus1_throwSocketErrorthrowSocketErrorCodethrowSocketErrorWaitReadthrowSocketErrorWaitWrite NameInfoFlagNI_NUMERICSERVNI_NUMERICHOST NI_NOFQDN NI_NAMEREQDNI_DGRAMAddrInfo addrFlags addrFamilyaddrSocketType addrProtocol addrAddress addrCanonName AddrInfoFlag AI_V4MAPPED AI_PASSIVEAI_NUMERICSERVAI_NUMERICHOST AI_CANONNAMEAI_ALL AI_ADDRCONFIG ShutdownCmd ShutdownBoth ShutdownSendShutdownReceive SocketOption CustomSockOptIPv6Only UserTimeout UseLoopBack SendTimeOut RecvTimeOut SendLowWater RecvLowWater ReusePortLingerCorkNoDelay MaxSegment TimeToLive OOBInline KeepAlive RecvBuffer SendBuffer Broadcast DontRouteSoErrorType ReuseAddrDebug ServiceNameHostNamemkSocketfdSocketdefaultProtocolsocket socketPairbindconnectlistenacceptsendTo sendBufTorecvFrom recvBufFromsendsendBufrecvrecvLenrecvBuf socketPort getPeerName getSocketNameisSupportedSocketOptionsetSocketOptiongetSocketOption getPeerCredsendFdrecvFdaNY_PORT iNADDR_ANY iN6ADDR_ANY sOMAXCONN sOL_SOCKET sCM_RIGHTSmaxListenQueueshutdownclose isConnectedisBound isListening isReadable isWritable inet_addr inet_ntoasocketToHandleaddrInfoFlagImplemented defaultHints getAddrInfo getNameInfo bindSocketsClose sIsConnectedsIsBound sIsListening sIsReadable sIsWritablesendAll sendAllTosendMany sendManyTo getContents NetworkEntry networkNamenetworkAliases networkFamilynetworkAddress NetworkName NetworkAddr HostEntryhostName hostAliases hostFamily hostAddresses ProtocolEntry protoName protoAliases protoNumber ServiceEntry serviceNameserviceAliases servicePortserviceProtocol ProtocolNamegetServiceByNamegetServiceByPortgetServicePortNumbergetServiceEntrysetServiceEntryendServiceEntrygetServiceEntriesgetProtocolByNamegetProtocolByNumbergetProtocolNumbergetProtocolEntrysetProtocolEntryendProtocolEntrygetProtocolEntries hostAddress getHostByName getHostByAddr getHostEntry setHostEntry endHostEntrygetHostEntriesgetNetworkByNamegetNetworkByAddrgetNetworkEntrysetNetworkEntryendNetworkEntrygetNetworkEntries ifNameToIndex getHostNamePortID UnixSocketService connectTolistenOnIOVeciovBaseiovLen$fStorableIOVecpackSocketType'packSocketTypeOrThrowunpackSocketType'baseForeign.StorablesizeOf CSaFamilymemsethtonsntohssockFd sockFamilysockType sockProtocol sockStatusunpackSocketType packFamily'intToPortNumberportNumberToInts6_addr_offsetpeek32poke32$fStorable(,,,)$fStorablePortNumber$fIntegralPortNumber$fRealPortNumber$fNumPortNumber$fEnumPortNumber$fShowPortNumber $fShowSocket $fEqSocketGHC.IO.ExceptionIOErrorghc-prim GHC.TypesIOsetNonBlockIfNeededpackSocketOptionpackSocketOption'TrueGHC.IO.Handle.TypesHandle GHC.IO.Handle hSetBufferinghClosepackBits unpackBitsGHC.Err undefined Data.MaybeJustBoolFalseNothing c_setsockopt c_getsockopt c_getsockname c_getpeername c_recvfromc_recvc_sendtoc_sendc_listen c_accept4c_accept c_connectc_bindc_socketc_close c_shutdown c_inet_addr c_inet_ntoa c_getnameinfoc_gai_strerrorc_freeaddrinfo c_getaddrinfohtonlc_recvFdc_sendFd c_socketpair recvLenBuf sdownCmdToInt isAcceptable aiFlagMapping niFlagMappingfollowAddrInfo gai_strerror withCStringIfmkInvalidRecvArgError mkEOFErrorcloseFd$fStorableAddrInfo$fShowSockAddrMsgHdrmsgName msgNameLenmsgIov msgIovLen$fStorableMsgHdr c_sendmsgc_writevbytestring-0.10.4.0Data.ByteString.Internal ByteStringremainingChunks totalLength withIOVec recvInnerData.ByteString.Lazy.Internal c_gethostnamec_if_nametoindex c_endnetent c_setnetent c_getnetentc_getnetbyaddrc_getnetbyname c_endhostent c_sethostent c_gethostentc_gethostbyaddrc_gethostbyname c_endprotoent c_setprotoent c_getprotoentc_getprotobynumberc_getprotobyname c_endservent c_setservent c_getserventc_getservbyportc_getservbynamelockwithLock getEntriesthrowNoSuchThingIfNull$fStorableNetworkEntry$fStorableHostEntry$fStorableProtocolEntry$fStorableServiceEntryconnect'listen'bracketOnErrorcatchIOtryIOfirstSuccessful