Socketdemo.borg 
Socketdemo.borg 
{
`Open a second session(Bob).
`Open this file in it.
`Evaluate what's between the {} in both agents.
`Evaluate one by one the code after } in Alice.
`Extra: you can also close a socket if you are done with it
`Just use the function close(sock).
activesocket:0;
`Connecting a socket to a port and start listening
`max is number of allowed incomming connections
connectself(port, max)::
{
    `making a socket
    sock:socket();
    if(sock < 0, display("Error making socket" + eoln));
    `binding the socket to a port on the local computer
    err:socket_bind(sock, port);
      if(err = -1, display("Error binding socket to port " +text(port) + eoln));
      `listening at the port, max, is the number of incomming call's allowed
    err:=socket_listen(sock, max);
    if(err = -1, display("Error listening to socket port " + text(port) + eoln));
      activesocket:=sock
};
`accepting incomming conections
acceptself()::
{
    `accepting an incomming socket
    `used when we are listening at a port
    `return a new socket used to send and receive
    tmp:socket_accept(activesocket);
    activesocket:=tmp
};
`connecting a socket to one on another machines port
connectother(port)::
{
    sock:socket();
    `connecting the socket to another computer on a given port
    socket_connect(sock, "localhost:" + text(port));
    activesocket:=sock
};
sending(mes)::
{
    `sending the message (a string)
    socket_send(activesocket, mes)
};
receiving()::
{
    `receiving a string (empty if nothing was send)
     display(socket_receive(activesocket))
}
}
a:agent(router_placename()+"/Bob")
connectself(6699,10)
a->connectother(6699)
acceptself()
sending("how are you")
a->receiving()