From: Robert Klemme Date: 2010-07-20T20:46:00+09:00 Subject: Re: TCPServer Muliple Clients by Name or Alias 2010/7/20 Jonathan Allen : > Dear List, > > I have read over the TCPServer docs and I have been able to implement a > simple server that supports multiple clients and will echo input back to > all users. What I cannot seem to find docs on or grasp, is how to > reference each individual client by a name. > > What I wish to accomplish is when a new client connects, they enter > their name/alias so that other users can send messages to individual > users by their name. Also, when they send a line of text to the server, > everyone else sees something like the following. > > nocjallen says Hello World! > > I'm not sure how to go about doing this. Currently my script creates a > new thread for each connection adds each connection to an array and then > loops through it and sends what one client has said, to each other > connection in the array. > > Any helpful input, examples or docs would be greatly appreciated. You need a Hash to store your connections in. Then you must create a protocol by which every client authenticates itself and sends its name. You'll likely want to store more than the raw socket in the Hash, e.g. something like ClientInfo = Struct.new :socket, :name Note that you must synchronize access to the centralized Hash which maps names to ClientInfo instances. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/