aboutsummaryrefslogtreecommitdiff
path: root/examples/tcp.server
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tcp.server')
-rw-r--r--examples/tcp.server36
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