add initial socket examples: client, server
FossilOrigin-Name: 706122b5c2fc0fabeb0f694820e56963763a5855f1dcacb65c887151c106482f
This commit is contained in:
parent
1ad903a1e7
commit
aab0b6bf18
2 changed files with 69 additions and 0 deletions
38
example/socket-client.forth
Normal file
38
example/socket-client.forth
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
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
|
||||||
|
~~~
|
31
example/socket-server.forth
Normal file
31
example/socket-server.forth
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
Get a socket.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
socket:create 'Sock var<n>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Bind to port 9998.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
'9998 @Sock socket:bind drop
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Prepare to listen for connections.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
#3 @Sock socket:listen drop-pair
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Serve the user some data. This will repeat 5 times, then end.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
#5 [ @Sock socket:accept (discard_error_code: drop )
|
||||||
|
'Hello_from_RETRO\n s:format swap [ socket:send drop-pair ] sip socket:close
|
||||||
|
] times
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Clean up.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
@Sock socket:close
|
||||||
|
~~~
|
Loading…
Reference in a new issue