all repos — min @ null

A small but practical concatenative programming language.

site/contents/reference-net.md

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
-----
content-type: "page"
title: "net Module"
-----
{@ _defs_.md || 0 @}

{#op||accept||{{sock1}} {{sock2}}||{{sock1}}||
Makes {{sock2}} (server) accept a connection from {{sock1}} (client). Returns the client socket {{sock1}} from which it will be possible to receive data from. #}

{#op||close||{{sock}}||{{none}}||
Closes a previously-opened socket. #}

{#op||connect||{{sock}} {{s}} {{i}}||{{sock}}||
> Connects socket {{sock}} to address {{s}} and port {{i}}.
> 
> > %sidebar%
> > Example
> > 
> > The following code shows how to send a message to a server running on localhost:7777. The message is passed as the first argument to the program.
> > 
> >     {} socket "localhost" 7777 connect =cli
> >     
> >     args 1 get :msg
> >     
> >     "Sending message \"$1\" to localhost:7777..." (msg) => % puts!
> >     
> >     cli "$1\n" (msg) => % send
> >     
> >     "Done." puts!
> >     
> >     cli close
 #}

{#op||listen||{{d}} {{sock1}}||{{sock2}}||
> Makes socket {{sock1}} listen to the specified address and port. {{d}} can be empty or contain any of the following properties, used to specify the address and port to listen to respectively.
> 
> address
> : The address to listen to (default: **0.0.0.0**).
> port
> : The port to listen to (default: **80**).
> 
> > %sidebar%
> > Example
> > 
> > The following code shows how to create a simple server that listens on port 7777, prints data received from clients, and exits when it receives the string `exit`:
> > 
> >     {} socket {"127.0.0.1" :address 7777 :port} listen =srv
> >     
> >     "Server listening on localhost:7777" puts!
> >     
> >     {} socket =cli
> >     "" :line
> >     (line "exit" !=)
> >     (
> >       srv cli accept #cli
> >       cli recv-line @line
> >       "Received: $1" (line) => % puts!
> >     ) while
> >     
> >     "Exiting..." puts!
> >     
> >     srv close
 #}

{#op||recv||{{sock}} {{i}}||{{s}}||
Waits to receive {{i}} characters from {{sock}} and returns the resulting data {{s}}.#}

{#op||recv-line||{{sock}}||{{s}}||
> Waits to receive a line of data from {{sock}} and returns the resulting data {{s}}. `""` is returned if {{sock}} is disconnected.
> 
> > %sidebar%
> > Example
> > 
> > The following code shows how to make a simple GET request to <http://httpbin.org/uuid> to receive a random UUID and display its response:
> > 
> > 
> >     {} socket "httpbin.org" 80 connect =cli
> >    
> >     cli "GET /uuid HTTP/1.1\r\nHost: httpbin.org\r\n\r\n" send
> >   
> >     cli recv-line puts :line
> >     (line "\}" match not) 
> >     (
> >       cli recv-line puts @line
> >     ) while
 #}

{#op||send||{{sock}} {{s}}||{{none}}||
Sends {{s}} to the connected socket {{sock}}. #}

{#op||socket||{{d}}||{{sock}}||
> Opens a new socket.
> 
> {{d}} can be empty or contain any of the following properties, used to specify the domain, type and protocol of the socket respectively.
> 
> domain
> : The socket domain. It can be set to one of the following values:
>   
>   *  **ipv4** (default): Internet Protocol version 4.
>   *  **ipv6**: Internet Protocol version 6.
>   *  **unix**: local Unix file {{no-win -> (not supported on Windows systems)}}.
> type
> : The socket type. It can be set to one of the following values:
>  
>   * **stream** (default): Reliable stream-oriented service or Stream Socket.
>   * **dgram**: Datagram service or Datagram Socket.
>   * **raw**: Raw protocols atop the network layer.
>   * **seqpacket**: Reliable sequenced packet service.
> protocol
> : The socket protocol. It can be set to one of the following values:
> 
>   * **tcp** (default): Transmission Control Protocol.
>   * **udp**: User Datagram Protocol.
>   * **ipv4**: Internet Protocol version 4 {{no-win}}.
>   * **ipv6**: Internet Protocol version 6 {{no-win}}.
>   * **raw**: Raw IP Packets protocol {{no-win}}.
>   * **icmp**: Internet Control Message Protocol {{no-win}}.
 #}