I've never been content with the documentation I've found relating to 
the usage of tcp based ports. The official REBOL documentation lightly 
touches on them but it's never been detailed enough, at least in my 
opinion. So here I am, with a few questions for the list :]

The ultimate end goal for this project is a simple MUD (if you don't 
know what a MUD is, you can generally think of it as a game like 
EverQuest without the graphics) or chat server, that clients connect to 
via. telnet. The finer details I can work out myself (I've been playing 
with Rebol for a long time now) but it seems to be the fundamentals I'm 
having problems with, those being:

Accepting new incoming connections
Keeping track of who is already connected
Sending text from one client to all connected clients

I have some clunky code I've patched together by looking at several 
other people's scripts and reading the docs. Here it is:

---

REBOL []

print ["The MUD server has started on" now/date ", at" now/time]

server-port: open/lines tcp://:23  ; listen for connections on port 23 
(standard telnet port)
connections: copy [] ; connections[] holds the list of port! objects

forever [
   connection-port: first server-port ; connection-port is the currently 
active connection -- should this be connection-port: WAIT first 
server-port?
   until [
       wait connection-port ; wait until there is activity on the port
       append connections connection-port ; add the newest port into the 
connections[] block
       foreach connection connections [ ; in this loop i was going to 
have it check to see if any of the clients listed in 'connections[] are 
still active -- what is an easy way to do this?
           x: reform ["There are now " length? connections " clients 
connected."]
           insert connection x
       ]
   ]
]

---

I am 200% open to suggestions on how to improve this code (and also 
-why- method X would be better/faster/etc. than method Y)... :] I want 
to make this code as good as possible because I have a lot of other 
things to focus on and they all depend on a reliable method for 
connecting and managing the connections!

1) How can I send text from one client to all the clients? Will I have 
to do anything special because I'm telneting to the server? (Using PuTTy)
2) What would be the best way to keep track of what clients are still 
connected and which ones have timed out or totally disconnected?
3) I have looked at Rugby and the examples on RebolForces for a 'server 
engine'. My project (as of right now) is basically sending text to and 
from telneted clients. Nothing very demanding, per say. When I start 
adding features to the MUD (i.e. actually making it into a game), it 
might get more resource hungry. Any suggestions of my current 'engine' 
versus a more complex one?


-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to