retroforth/example/socket-client.retro
crc 848ba7303b use .retro instead of .forth in examples
FossilOrigin-Name: b5feea667d30aac255d1cfca61fed355d438d2ce6021677f1e53af6302b15eee
2019-08-20 18:46:40 +00:00

38 lines
731 B
Text

This uses the new `socket:` words to download a file via Gopher.
Open a file to store the data and a socket.
~~~
'Output.txt file:open<for-writing> 'File var<n>
socket:create dup n:put nl 'Sock var<n>
~~~
Connect to the server.
~~~
'forthworks.com '70 socket:configure
@Sock socket:connect drop
~~~
Next, send the request.
~~~
'/\n\n s:format @Sock socket:send drop-pair
~~~
After this, I can just read in the data, writing it to
the file.
~~~
[ here #1024 @Sock socket:recv (discard_errno: drop
here [ @File file:write ] s:for-each
dup '%n_bytes_received\n s:format s:put
(check_for_disconnect: n:zero? ] until
~~~
And finally, clean up by closing the socket and file.
~~~
@Sock socket:close
@File file:close
~~~