tcp-streams-1.0.1.1: One stop solution for tcp client and server with tls support.

Safe HaskellNone
LanguageHaskell2010

System.IO.Streams.TCP

Contents

Description

This module provides convenience functions for interfacing raw tcp.

Please use bracket or its friends to enusre exception safety.

This module is intended to be imported qualified, e.g.:

import Data.Connection import qualified System.IO.Streams.TCP as TCP 
Synopsis

Documentation

type TCPConnection = Connection (Socket, SockAddr) Source #

Type alias for tcp connection.

Normally you shouldn't use Socket in connExtraInfo directly, this field is intend for used with setSocketOption if you need to.

client

connect Source #

Arguments

:: HostName

hostname to connect to

-> PortNumber

port number to connect to

-> IO TCPConnection 

Connect to server using defaultChunkSize.

connectSocket Source #

Arguments

:: HostName

hostname to connect to

-> PortNumber

port number to connect to

-> IO (Socket, SockAddr) 

Initiating an raw TCP connection to the given (HostName, PortNumber) combination.

It use getAddrInfo to resolve host/service name with AI_ADDRCONFIG, AI_NUMERICSERV hint set, so it should be able to resolve both numeric IPv4/IPv6 hostname and domain name.

TCP_NODELAY are enabled by default. you can use setSocketOption to adjust.

socketToConnection Source #

Arguments

:: Int

receive buffer size

-> (Socket, SockAddr)

socket address pair

-> IO TCPConnection 

Make a Connection from a Socket with given buffer size.

defaultChunkSize :: Int Source #

The chunk size used for I/O, less the memory management overhead.

Currently set to 32k.

server

bindAndListen Source #

Arguments

:: Int

connection limit

-> PortNumber

port number

-> IO Socket 

Bind and listen on port with a limit on connection count.

This function will set SO_REUSEADDR, TCP_NODELAY before binding.

bindAndListenWith Source #

Arguments

:: (Socket -> IO ())

set socket options before binding

-> Int

connection limit

-> PortNumber

port number

-> IO Socket 

Bind and listen on port with a limit on connection count.

Note: The following socket options are inherited by a connected TCP socket from the listening socket:

SO_DEBUG SO_DONTROUTE SO_KEEPALIVE SO_LINGER SO_OOBINLINE SO_RCVBUF SO_RCVLOWAT SO_SNDBUF SO_SNDLOWAT TCP_MAXSEG TCP_NODELAY 

accept :: Socket -> IO TCPConnection Source #

Accept a connection with defaultChunkSize.

acceptWith Source #

Arguments

:: ((Socket, SockAddr) -> IO TCPConnection)

set socket options, adjust receive buffer, etc.

-> Socket 
-> IO TCPConnection 

Accept a connection with user customization.