diff options
Diffstat (limited to 'examples/tcp.server')
-rw-r--r-- | examples/tcp.server | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/tcp.server b/examples/tcp.server new file mode 100644 index 0000000..ef71fe5 --- /dev/null +++ b/examples/tcp.server @@ -0,0 +1,36 @@ +# Example of a udp server which sends a response + +# Listen on port 20000. No host specified means 0.0.0.0 +set s [socket stream.server 20000] + +$s readable { + set sock [$s accept] + + # Make this server forking so we can accept multiple + # simultaneous connections + if {[os.fork] == 0} { + $s close + + # Get the request (max 80 chars) - need the source address + while {[$sock gets buf] >= 0} { + set buf [string trim $buf] + puts -nonewline "read '$buf'" + + try { + set result "$buf = [expr $buf]" + } on error {msg} { + set result "Error: $buf => $msg" + } + + puts ", sending '$result'" + + # Send the result back to where it came from + $sock puts $result + $sock flush + } + } + + $sock close +} + +vwait done |