module Tcp: Tcptype [< Import.Socket.Address.t ] where_to_connect
Tcp supports connection to inet sockets and unix sockets. These are two
different types. We use 'a where_to_connect to specify a socket to connect to,
where the 'a identifies the type of socket.val to_host_and_port : string -> int -> Import.Socket.Address.Inet.t where_to_connectval to_file : string -> Import.Socket.Address.Unix.t where_to_connecttype'awith_connect_options =?buffer_age_limit:[ `At_most of Core.Std.Time.Span.t | `Unlimited ] ->
?interrupt:unit Import.Deferred.t ->
?reader_buffer_size:int -> ?timeout:Core.Std.Time.Span.t -> 'a
val with_connection : ([< Import.Socket.Address.t ] where_to_connect ->
(Import.Reader.t -> Import.Writer.t -> 'a Import.Deferred.t) ->
'a Import.Deferred.t)
with_connect_optionswith_connection ~host ~port f looks up host from a string (using DNS as needed),
connects, then calls f passing in a reader and a writer for the connected socket.
When the deferred returned by f is determined, or any exception is thrown, the
socket (and reader and writer) are closed. The return deferred is fulfilled after f
has finished processing and the file descriptor for the socket is closed. If
interrupt is supplied then the connection attempt will be aborted if interrupt is
fulfilled before the connection has been established. Similarly, all connection
attempts have a timeout (default 30s), that can be overridden with timeout.val connect_sock : ([< Import.Socket.Address.t ] as 'a) where_to_connect ->
([ `Active ], 'a) Import.Socket.t Import.Deferred.tconnect_sock ~host ~port opens a TCP connection to the specified hostname
and port, returning the socket.
Any errors in the connection will be reported to the monitor that was current
when connect was called.
val connect : ([< Import.Socket.Address.t ] where_to_connect ->
(Import.Reader.t * Import.Writer.t) Import.Deferred.t)
with_connect_optionsconnect ~host ~port is a convenience wrapper around connect_sock that returns a
reader and writer on the socket. The reader and writer share a file descriptor, and
so closing one will affect the other. In particular, closing the reader before
closing the writer will cause the writer to subsequently raise an exception when it
attempts to flush internally-buffered bytes to the OS, due to a closed fd. You should
close the Writer first to avoid this problem.
If possible, use with_connection, which automatically handles closing.
module Where_to_listen:sig..end
Where_to_listen describes the socket that a tcp server should listen on.
val on_port : int -> Where_to_listen.inetval on_port_chosen_by_os : Where_to_listen.inetval on_file : string -> Where_to_listen.unixmodule Server:sig..end
Server.t represents a TCP server listening on a socket.