[REBOL] Using 'wait with a series of ports
From: seth::chromick::earthlink::net at: 14-Nov-2003 3:53
Thanks to all who answered my first question regarding the MUD I am
coding! I have toyed around with this more and I am running into an issue.
Code:
server: open/lines tcp://:23 ; listen for connections
clients: copy []
insert clients server
Then obviously client/1 = server
But if lower down I have...
connection: wait/all clients
How do I determine the position of the port in the 'clients series?
Also, how do I determine if the port that is now active is a) a new
connection or b) already a known connection, but is trying to send data
to the server (like the user has typed something in, a name/password,
etc.). Thanks for the help, I know I can depend on people here :]
Here is the code I'm messing with (not functional from all the tweaking
I've been doing!)
---
REBOL []
print ["The MUD server has started on" now/date ", at" now/time]
server: open/lines tcp://:23 ; listen for connections
clients: copy []
y: copy []
insert clients server
buffer: make string! 1024
forever [
; Simple enough... Wait indefinitly for the first activity on the
server port (23)
;connection: wait first server
connection: wait/all clients
; Append the new connection to the list of clients
append clients connection
; Inform the new connection that it is now properlly connected
x: reform ["Now connected:" last client port-id]
insert tail connection x
print x
; Loop through each client to inform of a new join to the server
foreach client clients [
either equal? client connection [
x: "You are connected now!"
][
x: "Someone new has joined!"
]
insert client x
]
]