Library
Module
Module type
Parameter
Class
Class type
val udp_server :
addr:string ->
port:int ->
f:(Async.Socket.Address.Inet.t -> string -> unit Async.Deferred.t) ->
unit Async.Deferred.t
udp_server addr port f
except that f is called on every packet received with the address it was received from and the data received. The next packet will not be read until the Deferred returned by f is determined
val udp_client :
addr:string ->
port:int ->
f:(Async.Writer.t -> 'a Async.Deferred.t) ->
'a Async.Deferred.t
udp_client ~addr ~port ~f
Same as tcp_client for udp
val connect :
[< `Inet of Async.Unix.Inet_addr.t * int | `Unix of string ] as 'a
Async.Socket.Type.t ->
addr:'a ->
([ `Active ], 'a) Async.Socket.t Async.Deferred.t
connect socket_type ~addr
connects a socket to addr
val tcp_server_generic :
?max_connections:int ->
addr:'a ->
stype:'a Async.Socket.Type.t ->
on_client_error:[ `Ignore | `Call of 'a -> exn -> unit ] ->
f:('a -> Async.Reader.t -> Async.Writer.t -> unit Async.Deferred.t) ->
?buffer_age_limit:[ `At_most of Core.Time.Span.t | `Unlimited ] ->
unit ->
unit Async.Deferred.t
val tcp_server_unix :
?max_connections:int ->
addr:Async.Socket.Address.Unix.t ->
on_client_error:
[ `Ignore | `Call of Async.Socket.Address.Unix.t -> exn -> unit ] ->
f:
(Async.Socket.Address.Unix.t ->
Async.Reader.t ->
Async.Writer.t ->
unit Async.Deferred.t) ->
?buffer_age_limit:[ `At_most of Core.Time.Span.t | `Unlimited ] ->
unit ->
unit Async.Deferred.t
tcp_server_unix ~addr ~port ?on_client_error ~f
makes a tcp server over a unix domain socket, listening on a path indicated by addr. When clients connect f will be run and is passed the address of the client, and a Reader and Writer for communicating with the client. When the deferred returned by f is determined or f throws an exception the client socket and the reader and writer will be closed. The Deferred returned by the function as a whole will be determined when the server is ready to accept incoming connections