Z-IO-0.1.1.0: Simple and high performance IO toolkit for Haskell
Copyright(c) Winterland 2018
LicenseBSD
Maintainerdrkoster@qq.com
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Z.IO.Network.SocketAddr

Description

This module provides necessary types and constant for low level socket address manipulating.

Synopsis

name to address

data SocketAddr Source #

IPv4 or IPv6 socket address, i.e. the sockaddr_in or sockaddr_in6 struct.

ipv4 :: HasCallStack => CBytes -> PortNumber -> SocketAddr Source #

Convert a string containing an IPv4 addresses to a binary structure

This is partial function, wrong address will throw InvalidArgument exception.

ipv6 :: HasCallStack => CBytes -> PortNumber -> SocketAddr Source #

Convert a string containing an IPv6 addresses to a binary structure

This is partial function, wrong address will throw InvalidArgument exception.

sockAddrFamily :: SocketAddr -> SocketFamily Source #

Show an IPv6 address in the most appropriate notation, based on recommended representation proposed by RFC 5952.

/The implementation is completely compatible with the current implementation of the inet_ntop function in glibc./

withSocketAddr :: SocketAddr -> (Ptr SocketAddr -> IO a) -> IO a Source #

Pass SocketAddr to FFI as pointer.

withSocketAddrUnsafe :: SocketAddr -> (MBA# SocketAddr -> IO a) -> IO a Source #

Pass SocketAddr to FFI as pointer.

USE THIS FUNCTION WITH UNSAFE FFI CALL ONLY.

withSocketAddrStorage :: (Ptr SocketAddr -> IO ()) -> IO SocketAddr Source #

Allocate space for sockaddr_storage and pass to FFI.

withSocketAddrStorageUnsafe :: (MBA# SocketAddr -> IO ()) -> IO SocketAddr Source #

Allocate space for sockaddr_storage and pass to FFI.

USE THIS FUNCTION WITH UNSAFE FFI CALL ONLY.

IPv4 address

newtype InetAddr Source #

Independent of endianness. For example 127.0.0.1 is stored as (127, 0, 0, 1).

For direct manipulation prefer inetAddrToTuple and tupleToInetAddr.

Constructors

InetAddr 

Fields

Instances

Instances details
Eq InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Ord InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Show InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

UnalignedAccess InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

inetBroadcast :: InetAddr Source #

255.255.255.255

inetNone :: InetAddr Source #

255.255.255.255

inetAddrToTuple :: InetAddr -> (Word8, Word8, Word8, Word8) Source #

Converts InetAddr to representation-independent IPv4 quadruple. For example for 127.0.0.1 the function will return (127, 0, 0, 1) regardless of host endianness.

tupleToInetAddr :: (Word8, Word8, Word8, Word8) -> InetAddr Source #

Converts IPv4 quadruple to InetAddr.

IPv6 address

data Inet6Addr Source #

Independent of endianness. For example ::1 is stored as (0, 0, 0, 1).

For direct manipulation prefer inet6AddrToTuple and tupleToInet6Addr.

Constructors

Inet6Addr !Word32 !Word32 !Word32 !Word32 

Instances

Instances details
Eq Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Ord Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Show Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

UnalignedAccess Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

port numbber

newtype PortNumber Source #

Port number. Use the Num instance (i.e. use a literal) to create a PortNumber value.

>>> 1 :: PortNumber
1
>>> read "1" :: PortNumber
1
>>> show (12345 :: PortNumber)
"12345"
>>> 50000 < (51000 :: PortNumber)
True
>>> 50000 < (52000 :: PortNumber)
True
>>> 50000 + (10000 :: PortNumber)
60000

Constructors

PortNumber Word16 

Instances

Instances details
Bounded PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Enum PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Eq PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Integral PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Num PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Ord PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Read PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Real PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Show PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

UnalignedAccess PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

family, type, protocol

newtype SocketFamily Source #

Constructors

SocketFamily CInt 

Instances

Instances details
Eq SocketFamily Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Ord SocketFamily Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Read SocketFamily Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Show SocketFamily Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable SocketFamily Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

pattern AF_UNSPEC :: SocketFamily Source #

unspecified

pattern AF_INET :: SocketFamily Source #

internetwork: UDP, TCP, etc

pattern AF_INET6 :: SocketFamily Source #

Internet Protocol version 6

newtype SocketType Source #

Constructors

SocketType CInt 

pattern SOCK_ANY :: SocketType Source #

Used in getAddrInfo hints, for any type can be returned by getAddrInfo

newtype ProtocolNumber Source #

Constructors

ProtocolNumber CInt 

Instances

Instances details
Eq ProtocolNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Ord ProtocolNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Read ProtocolNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Show ProtocolNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable ProtocolNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Internal helper