问题
Often, when learning a language I'll write a server of some sort. Does gforth have the capability to use network sockets?
I don't see anything about sockets in the manual.
回答1:
Though I don't see any documentation about it, there is a socket.fs which binds to libc.
- You can find some examples of FORTH that use sockets.fs on Rosetta Code, specifically the ECHO server example
Provided under the GNU FDL, from Rossetta code by IanOsgood (commit)
include unix/socket.fs
128 constant size
: (echo) ( sock buf -- sock buf )
begin
cr ." waiting..."
2dup 2dup size read-socket nip
dup 0>
while
." got: " 2dup type
rot write-socket
repeat
drop drop drop ;
create buf size allot
: echo-server ( port -- )
cr ." Listening on " dup .
create-server
dup 4 listen
begin
dup accept-socket
cr ." Connection!"
buf ['] (echo) catch
cr ." Disconnected (" . ." )"
drop close-socket
again ;
12321 echo-server
However, ymmv
nc localhost 12321
PING
PING
PONG
PONG
There are no Keepalives so you'll logically get disconnects from that.
来源:https://stackoverflow.com/questions/49602466/does-gforth-contain-network-socket-capability