posix-socket-0.1: Bindings to the POSIX socket API

Safe HaskellNone
LanguageHaskell98

System.Posix.Socket

Description

POSIX sockets.

Synopsis

Documentation

data Socket f Source #

Socket of a particular family.

Instances

Eq (Socket f) Source # 

Methods

(==) :: Socket f -> Socket f -> Bool #

(/=) :: Socket f -> Socket f -> Bool #

withSocketFd :: MonadBase IO μ => Socket f -> (Fd -> IO α) -> μ α Source #

Lock the socket and pass the underlying file descriptor to the given action.

unsafeSocketFd :: MonadBase IO μ => Socket f -> μ Fd Source #

Get the underlying file descriptor.

unsafeSocketFromFd :: MonadBase IO μ => Fd -> μ (Socket f) Source #

Use file descriptor as a socket.

class SockAddr (SockFamilyAddr f) => SockFamily f where Source #

Socket family.

Minimal complete definition

sockFamilyCode

Associated Types

type SockFamilyAddr f Source #

Methods

sockFamilyCode :: f -> CInt Source #

Socket family code.

class SockAddr a where Source #

Socket address.

Methods

sockAddrMaxSize :: Proxy a -> Int Source #

Maximum size of a socket address.

sockAddrSize :: a -> Int Source #

Size of a particular socket address.

peekSockAddr :: Ptr a -> Int -> IO a Source #

Read socket address from a memory buffer.

pokeSockAddr :: Ptr a -> a -> IO () Source #

Write socket address to a memory buffer.

streamSockType :: SockType Source #

See SOCK_STREAM.

datagramSockType :: SockType Source #

See SOCK_DGRAM.

rawSockType :: SockType Source #

See SOCK_RAW.

seqPacketSockType :: SockType Source #

See SOCK_SEQPACKET.

defaultSockProto :: SockProto Source #

Default socket protocol (corresponds to 0).

class Storable (SockOptRaw o) => SockOpt o where Source #

Socket option.

Minimal complete definition

sockOptRaw, sockOptValue, sockOptLevel, sockOptCode

Associated Types

type SockOptValue o Source #

Option value type

type SockOptRaw o Source #

FFI-level option value type

type SockOptReadable o :: Bool Source #

Whether option is readable

type SockOptWritable o :: Bool Source #

Whether option is writable

Methods

sockOptRaw :: o -> SockOptValue o -> SockOptRaw o Source #

Convert to FFI-level value

sockOptValue :: o -> SockOptRaw o -> SockOptValue o Source #

Convert from FFI-level value

sockOptLevel :: o -> CInt Source #

Option protocol level

sockOptCode :: o -> CInt Source #

Option code

Instances

peekMsgFlag :: MsgFlags Source #

See MSG_PEEK.

truncMsgFlag :: MsgFlags Source #

See MSG_TRUNC.

oobMsgFlag :: MsgFlags Source #

See MSG_OOB.

dontRouteMsgFlag :: MsgFlags Source #

See MSG_DONTROUTE.

socket :: (SockFamily f, MonadBase IO μ) => f -> SockType -> SockProto -> μ (Socket f) Source #

Create a socket. See socket(3). The underlying file descriptor is non-blocking.

getSockOpt :: (SockOpt o, SockOptReadable o ~ True, MonadBase IO μ) => Socket f -> o -> μ (SockOptValue o) Source #

Get socket option value. See getsockopt(3).

setSockOpt :: (SockOpt o, SockOptWritable o ~ True, MonadBase IO μ) => Socket f -> o -> SockOptValue o -> μ () Source #

Set socket option value. See setsockopt(3).

bind :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> SockFamilyAddr f -> μ () Source #

Bind socket to the specified address. See bind(3).

connect :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> SockFamilyAddr f -> μ () Source #

Connect socket to the specified address. This function blocks. See connect(3).

tryConnect :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> SockFamilyAddr f -> μ Bool Source #

Try to connect socket without blocking. On success True is returned. If the connection did not succeed immediately, False is returned. See connect(3).

listen :: MonadBase IO μ => Socket f -> Int -> μ () Source #

Listen for connections on the given socket. See listen(2).

accept :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> μ (Socket f, SockFamilyAddr f) Source #

Accept a connection on the given socket. This function blocks. See accept(2).

getLocalAddr :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> μ (SockFamilyAddr f) Source #

Get the local address. See getsockname(3).

getRemoteAddr :: forall f μ. (SockFamily f, MonadBase IO μ) => Socket f -> μ (SockFamilyAddr f) Source #

Get the remote address. See getpeername(3).

hasOobData :: MonadBase IO μ => Socket f -> μ Bool Source #

Check if socket has out-of-band data. See sockatmark(3).

recvBufs Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [(Ptr Word8, Int)]

Memory buffers

-> MsgFlags

Message flags

-> μ (Int, MsgFlags)

Received message length and flags

Receive a message from a connected socket, possibly utilizing multiple memory buffers. See recvmsg(3).

recvBuf Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Ptr α

Buffer pointer

-> Int

Buffer length

-> MsgFlags

Message flags

-> μ (Int, MsgFlags)

Received message length and flags

Receive a message from a connected socket. See recvmsg(3).

recv' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Int

Maximum message length

-> MsgFlags

Message flags

-> μ (ByteString, MsgFlags)

Received message contents and flags

Receive a message from a connected socket. See recvmsg(3).

recv Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Int

Maximum message length

-> μ ByteString

Received message contents

Receive a message from a connected socket. See recvmsg(3).

recvBufsFrom Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [(Ptr Word8, Int)]

Memory buffers

-> MsgFlags

Message flags

-> μ (SockFamilyAddr f, Int, MsgFlags)

Received message source address, length, and flags

Receive a message from an unconnected socket, possibly utilizing multiple memory buffers. See recvmsg(3).

recvBufFrom Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Ptr α

Buffer pointer

-> Int

Buffer length

-> MsgFlags

Message flags

-> μ (SockFamilyAddr f, Int, MsgFlags)

Received message source address, length, and flags

Receive a message from an unconnected socket. See recvmsg(3).

recvFrom' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Int

Maximum message length

-> MsgFlags

Message flags

-> μ (SockFamilyAddr f, ByteString, MsgFlags)

Received message source address, contents, and flags

Receive a message from an unconnected socket. See recvmsg(3).

recvFrom Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Int

Maximum message length

-> μ (SockFamilyAddr f, ByteString)

Received message source address and contents

Receive a message from an unconnected socket. See recvmsg(3).

sendBufs Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [(Ptr Word8, Int)]

Memory buffers

-> MsgFlags

Message flags

-> μ Int

The number of bytes sent

Send a message split into several memory buffers on a connected socket. See sendmsg(3).

sendMany' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [ByteString]

Message contents

-> MsgFlags

Message flags

-> μ Int

The number of bytes sent

Send a message split into several ByteStrings on a connected socket. See sendmsg(3).

sendMany Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [ByteString]

Message contents

-> μ Int

The number of bytes sent

Send a message split into several ByteStrings on a connected socket. See sendmsg(3).

sendBuf Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Ptr α

Buffer pointer

-> Int

Buffer length

-> MsgFlags

Message flags

-> μ Int

The number of bytes sent

Send a message on a connected socket. See sendmsg(3).

send' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> ByteString

Message contents

-> MsgFlags

Message flags

-> μ Int

The number of bytes sent

Send a message on a connected socket. See sendmsg(3).

send Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> ByteString

Message contents

-> μ Int

The number of bytes sent

Send a message on a connected socket. See sendmsg(3).

sendBufsTo Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [(Ptr Word8, Int)]

Memory buffers

-> MsgFlags

Message flags

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message split into several memory buffers on an unconnected socket. See sendmsg(3).

sendManyTo' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [ByteString]

Message contents

-> MsgFlags

Message flags

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message split into several ByteStrings on an unconnected socket. See sendmsg(3).

sendManyTo Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> [ByteString]

Message contents

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message split into several ByteStrings on an unconnected socket. See sendmsg(3).

sendBufTo Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> Ptr α

Buffer pointer

-> Int

Buffer length

-> MsgFlags

Message flags

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message on an unconnected socket. See sendmsg(3).

sendTo' Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> ByteString

Message contents

-> MsgFlags

Message flags

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message on an unconnected socket. See sendmsg(3).

sendTo Source #

Arguments

:: (SockFamily f, MonadBase IO μ) 
=> Socket f

The socket

-> ByteString

Message contents

-> SockFamilyAddr f

Message destination address

-> μ Int

The number of bytes sent

Send a message on an unconnected socket. See sendmsg(3).

shutdown :: MonadBase IO μ => Socket f -> SockOps -> μ () Source #

Shut down a part of a full-duplex connection. See shutdown(3).

close :: MonadBase IO μ => Socket f -> μ () Source #

Close the socket. See close(3).