From 72b1e75d9bfc7340c3e4a7158cf1c21ae467d52a Mon Sep 17 00:00:00 2001
From: Micael Karlberg This module provides an API for the socket interface.
- It is used to create, delete and manipulate sockets.
The idea is that it shall be as "close as possible" to the OS
+ level socket interface. The only significant addition is that some of
+ the functions,
+ e.g.
TBD
+
+client(Addr, Port) ->
+ {ok, Sock} = socket:open(inet, stream, tcp),
+ ok = socket:bind(Sock, #{family => inet,
+ port => 0,
+ addr => any}),
+ ok = socket:connect(Sock, #{family => inet,
+ addr => Addr,
+ port => Port}),
+ Msg = list_to_binary("hello"),
+ ok = socket:send(Sock, Msg),
+ ok = socket:shutdown(Sock, write),
+ {ok, Msg} = socket:recv(Sock),
+ ok = socket:close(Sock).
+
+server(Addr, Port) ->
+ {ok, LSock} = socket:open(inet, stream, tcp),
+ ok = socket:bind(LSock, #{family => inet,
+ port => Port,
+ addr => Addr}),
+ ok = socket:listen(LSock),
+ {ok, Sock} = socket:accept(LSock),
+ {ok, Msg} = socket:recv(Sock),
+ ok = socket:send(Sock, Msg),
+ ok = socket:shutdown(Sock, write),
+ ok = socket:close(Sock),
+ ok = socket:close(LSock).
+