summaryrefslogtreecommitdiff
path: root/examples/unix.dgram.server
diff options
context:
space:
mode:
Diffstat (limited to 'examples/unix.dgram.server')
-rw-r--r--examples/unix.dgram.server35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/unix.dgram.server b/examples/unix.dgram.server
new file mode 100644
index 0000000..43ada19
--- /dev/null
+++ b/examples/unix.dgram.server
@@ -0,0 +1,35 @@
+# Example of a udp server which sends a response
+
+# Listen on port 20000. No host specified means 0.0.0.0
+file delete unix.sock
+set s [socket unix.dgram.server unix.sock]
+
+puts "Listening on dgram socket [$s sockname]"
+
+set count 0
+
+# For each request...
+$s readable {
+ # Get the request (max 80 chars) - need the source address
+ set buf [$s recvfrom 80 addr]
+
+ puts -nonewline "read '$buf' from client $addr"
+
+ try {
+ set result "$buf = [expr $buf]"
+ } on error {msg} {
+ set result "Error: $buf => $msg"
+ }
+
+ puts ", sending '$result' to client $addr"
+
+ # Send the result back to where it came from
+ $s sendto $result $addr
+}
+
+# Handle signals so the socket is removed on exit
+signal handle SIGINT SIGTERM
+
+catch -signal {
+ vwait done
+}