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 119 |
----- 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}}||{{null}}|| 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}}||{{null}}|| 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}}. #} |