# Help need in chat client/server

**URL:** <https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749>\
**Category:** Ruby\
**Created:** [April 14, 2008, 7:25pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749 "2008-04-14T19:25:58Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 14, 2008, 7:25pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/1 "2008-04-14T19:25:58Z")

</div>

## Hey… Im new to this network programmin and I need help with this code i copied and changed a little. this is a client/server chat…

Server code:

## require “socket” PORT = 12321 server = TCPServer.new(PORT) flag=true while (session = server.accept) while flag==true print “Sending:” line=gets.chomp! session.puts line end end

Client Code:  
require “socket”

## PORT = 12321 HOST = ARGV[0] || “localhost” flag=true session = TCPSocket.new(HOST, PORT) while flag==true line = session.gets puts "Recived:#{line} " end

i dont know what i did but its sort of doing a one way communication…  
can someone please help me with creating two clients and making them  
chat 2way amongst them…  
please… i would really be thankfulll  
waiting for a reply

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 14, 2008, 8:13pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/2 "2008-04-14T20:13:50Z")

</div>

On Mon, Apr 14, 2008 at 11:25 AM, HadsS [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> flag=true  
> require “socket”
> 
> i dont know what i did but its sort of doing a one way communication…  
> can someone please help me with creating two clients and making them  
> chat 2way amongst them…  
> please… i would really be thankfulll  
> waiting for a reply

There are a few logical/structural problems here:

Firstly, it is only one way because one end is sending and the other  
listening but the sending end never listens and the listening end never  
sends.

Secondly, control in this is going to be painful as it is. You probably  
want to thread your program so that each end can “talk” and “listen” at  
the  
same time. You could make it clunky and just switch between the two but  
that would be rather un-intuative.

I would offer up some sample code but haven’t done any socket  
programming in  
Ruby and am currently at work I bet someone will come along with more  
useful info though (I offer this as something to get you going in the  
right  
direction until then).

–  
“Hey brother Christian with your high and mighty errand, Your actions  
speak  
so loud, I can’t hear a word you’re saying.”

-Greg Graffin (Bad Religion)

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 14, 2008, 8:23pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/3 "2008-04-14T20:23:18Z")

</div>

Hi HadsS,

There is some example code in Peter C.s book (Beginning Ruby From  
Novice  
to Professional):

[http://www.springerlink.com/content/ph5611n3q3uu0619/](http://www.springerlink.com/content/ph5611n3q3uu0619/)

Not sure you’ll have access to it. I can forward you the chapter if you  
like.

I am working on some network programming in ruby as well. Maybe we can  
collaborate a little. It’s not the easiest thing to grasp ☹

Vince

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 15, 2008, 1:36am UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/4 "2008-04-15T01:36:46Z")

</div>

On 14 Apr 2008, at 18:25, HadsS wrote:

> Hey…  
> Im new to this network programmin and I need help with this code i

Visit the URL in my sig and download the Anchoring Trust presentation:  
it has examples of writing all TCP and UDP client and server systems  
along with some explanatory notes. There are probably bugs but along  
with what you’ve already got it should be enough to teach you all the  
basics of Ruby network programming.

Ignore all the other bits in there though - it’ll only confuse  
matters…

Ellie

## Eleanor McHugh Games With Brains [http://slides.games-with-brains.net](http://slides.games-with-brains.net)

raise ArgumentError unless @reality.responds\_to? :reason

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 15, 2008, 7:40am UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/5 "2008-04-15T07:40:32Z")

</div>

Can someone please help me with threading… i read about it but i dont  
really get it…  
Glen suggested it to use it to built two way communication…  
If i culd get some code it would be reallly helpfull…

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 15, 2008, 1:53pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/6 "2008-04-15T13:53:37Z")

</div>

On Mon, Apr 14, 2008 at 7:25 PM, HadsS [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hey…  
> Im new to this network programmin and I need help with this code i  
> copied and changed a little.  
> this is a client/server chat…  
> …

Did you try EventMachine? Once I wrote a TCP echo server under 30  
minutes  
(without any previous knowledge of EM, and this includes installation  
of EM and reading its docs). Really nice.

J.

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 14, 2008, 11:12pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/7 "2008-04-14T23:12:34Z")

</div>

HadsS wrote:

> Hey…  
> Im new to this network programmin and I need help with this code i  
> copied and changed a little.  
> this is a client/server chat…  
> (…)  
> waiting for a reply

Section 5 in this article explains a chat server:  
[https://www6.software.ibm.com/developerworks/education/l-rubysocks/l-rubysocks-a4.pdf](https://www6.software.ibm.com/developerworks/education/l-rubysocks/l-rubysocks-a4.pdf)

regards,

Siep

---

<div class="post-metadata">

**Author:** ![HadsS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/58f4c7/32.png) [@HadsS](https://www.ruby-forum.com/u/HadsS)\
**Post date:** [April 15, 2008, 3:56pm UTC](https://www.ruby-forum.com/t/help-need-in-chat-client-server/134749/8 "2008-04-15T15:56:23Z")

</div>

HadsS,

Here are a couple of pieces on threading in Ruby:

[http://www.rubycentral.com/pickaxe/tut\_threads.html](http://www.rubycentral.com/pickaxe/tut_threads.html)  
[http://corelib.rubyonrails.org/classes/Thread.html](http://corelib.rubyonrails.org/classes/Thread.html)

Hopefully this will help if you want to go in the thread direction, it  
is  
what I would do but I come from a C background.

On Tue, Apr 15, 2008 at 5:52 AM, Jano S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> J.

–  
“Hey brother Christian with your high and mighty errand, Your actions  
speak  
so loud, I can’t hear a word you’re saying.”

-Greg Graffin (Bad Religion)
