aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2001-03-12 19:42:46 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2001-03-12 19:42:46 +0000
commit3f52ed5c533d644ebe49c11905f7f0ee2feaa118 (patch)
tree7a6123cd07b68b9e24de8579fbb3f7e9f2e6b7c0
parent8ed1b05f86a941d0fe9acc16758eb885847b43e5 (diff)
downloadluasocket-3f52ed5c533d644ebe49c11905f7f0ee2feaa118.tar.gz
luasocket-3f52ed5c533d644ebe49c11905f7f0ee2feaa118.tar.bz2
luasocket-3f52ed5c533d644ebe49c11905f7f0ee2feaa118.zip
Initial revision
-rw-r--r--samples/tinyirc.lua61
1 files changed, 61 insertions, 0 deletions
diff --git a/samples/tinyirc.lua b/samples/tinyirc.lua
new file mode 100644
index 0000000..992b235
--- /dev/null
+++ b/samples/tinyirc.lua
@@ -0,0 +1,61 @@
1function set_add(set, sock)
2 tinsert(set, sock)
3end
4
5function set_remove(set, sock)
6 for i = 1, getn(set) do
7 if set[i] == sock then
8 tremove(set, i)
9 break
10 end
11 end
12end
13
14host = host or "*"
15port1 = port1 or 8080
16port2 = port2 or 8081
17if arg then
18 host = arg[1] or host
19 port1 = arg[2] or port1
20 port2 = arg[3] or port2
21end
22
23server1 = bind(host, port1)
24server1:timeout(1)
25server1.is_server = 1
26server2 = bind(host, port2)
27server2:timeout(1)
28server2.is_server = 1
29
30set = {server1, server2}
31
32while 1 do
33 local r, s, e, l
34 r, _, e = select(set, nil)
35 for i, v in r do
36 if v.is_server then
37 s = v:accept()
38 if s then
39 s:timeout(1)
40 set_add(set, s)
41 write("Added new client. ", getn(set)-2, " total.\n")
42 end
43 else
44 l, e = v:receive()
45 if e then
46 v:close()
47 set_remove(set, v)
48 write("Removed client. ", getn(set)-2, " total.\n")
49 end
50 write("Broadcasting line '", tostring(l), "'.\n")
51 _, s, e = select(nil, set, 1)
52 if not e then
53 for i,v in s do
54 v:send(l, "\r\n")
55 end
56 else
57 write("No one ready to listen!!!\n")
58 end
59 end
60 end
61end