Z-IO-0.1.6.1: 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

Contents

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.

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
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

Unaligned InetAddr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable 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
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

Unaligned Inet6Addr Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable 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
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

Generic PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Associated Types

type Rep PortNumber :: Type -> Type #

ShowT PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Unaligned PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

Storable PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

type Rep PortNumber Source # 
Instance details

Defined in Z.IO.Network.SocketAddr

type Rep PortNumber = D1 (MetaData "PortNumber" "Z.IO.Network.SocketAddr" "Z-IO-0.1.6.1-EazPwUSEmxFLUJXgFNyrct" True) (C1 (MetaCons "PortNumber" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Word16)))

family, type, protocol

SocketFamily

pattern AF_UNSPEC :: SocketFamily Source #

unspecified

pattern AF_INET :: SocketFamily Source #

internetwork: UDP, TCP, etc

pattern AF_INET6 :: SocketFamily Source #

Internet Protocol version 6

pattern SOCK_ANY :: SocketType Source #

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

Internal helper