Network

sealed trait Network[F <: ([_$1] =>> Any)] extends SocketGroup[F] with DatagramSocketGroup[F]
Provides the ability to work with TCP, UDP, and TLS.
Example
{{{
import fs2.Stream
import fs2.io.net.{Datagram, Network}
def send[F[_] : Network](datagram: Datagram): F[Unit] =
Network[F] .openDatagramSocket().use { socket =>
socket.write(packet)
}
}}}
In this example, the F[_] parameter to send requires the Network constraint instead
of requiring the much more powerful Async constraint.
The Network instance has a set of global resources used for managing sockets. Alternatively,
use the socketGroup and datagramSocketGroup operations to manage the lifecycle of underlying
resources.
An instance of Network is available for any effect F which has an Async[F] instance.
Companion
object
trait SocketGroup[F]
class Object
trait Matchable
class Any

Value members

Methods

def socketGroup(threadCount: Int, threadFactory: ThreadFactory): Resource[F, SocketGroup[F]]
Provides an isolated SocketGroup[F] with the specified thread pool configuration.
The resulting socket group is shutdown during resource finalization, resulting in
closure of any sockets that were created.
Note: Network is a SocketGroup so only use this operation if you need explicit
control over the lifecycle of the socket group.
Value Params
threadCount
number of threads to allocate in the fixed thread pool backing the NIO channel group
threadFactory
factory used to create fixed threads
def datagramSocketGroup(threadFactory: ThreadFactory): Resource[F, DatagramSocketGroup[F]]
Provides an isolated DatagramSocketGroup[F] with the specified thread configuration.
The resulting socket group is shutdown during resource finalization, resulting in
closure of any sockets that were created.
Note: Network is a DatagramSocketGroup so only use this operation if you need explicit
control over the lifecycle of the socket group.
Value Params
threadFactory
factory used to create selector thread
Returns a builder for TLSContext[F] values.
For example, Network[IO].tlsContext.system returns a F[TLSContext[F]].

Inherited methods

def serverResource(address: Option[Host], port: Option[Port], options: List[SocketOption]): Resource[F, (SocketAddress[IpAddress], Stream[F, Socket[F]])]
Like server but provides the SocketAddress of the bound server socket before providing accepted sockets.
Inhertied from
SocketGroup
def client(to: SocketAddress[Host], options: List[SocketOption]): Resource[F, Socket[F]]
Opens a TCP connection to the specified server.
The connection is closed when the resource is released.
Value Params
options
socket options to apply to the underlying socket
to
address of remote server
Inhertied from
SocketGroup
def openDatagramSocket(address: Option[Host], port: Option[Port], options: List[SocketOption], protocolFamily: Option[ProtocolFamily]): Resource[F, DatagramSocket[F]]
Creates a UDP socket bound to the specified address.
Value Params
address
address to bind to; defaults to all interfaces
options
socket options to apply to the underlying socket
port
port to bind to; defaults to an ephemeral port
protocolFamily
protocol family to use when opening the supporting DatagramChannel
Inhertied from
DatagramSocketGroup
def server(address: Option[Host], port: Option[Port], options: List[SocketOption]): Stream[F, Socket[F]]
Creates a TCP server bound to specified address/port and returns a stream of
client sockets -- one per client that connects to the bound address/port.
When the stream terminates, all open connections will terminate as well.
Value Params
address
address to accept connections from; none for all interfaces
options
socket options to apply to the underlying socket
port
port to bind
Inhertied from
SocketGroup