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
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).
···
On Mon, Apr 14, 2008 at 11:25 AM, HadsS <a.hadss@gmail.com> 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..
-----------------------
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
--
"Hey brother Christian with your high and mighty errand, Your actions speak
so loud, I can't hear a word you're saying."
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...
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.
···
On Mon, Apr 14, 2008 at 7:25 PM, HadsS <a.hadss@gmail.com> 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..
...
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
···
On Mon, Apr 14, 2008 at 2:13 PM, Glen Holcomb <damnbigman@gmail.com> wrote:
On Mon, Apr 14, 2008 at 11:25 AM, HadsS <a.hadss@gmail.com> 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..
> -----------------------
> 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
>
>
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."
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...
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 Svitok <jan.svitok@gmail.com> wrote:
On Mon, Apr 14, 2008 at 7:25 PM, HadsS <a.hadss@gmail.com> 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.
--
"Hey brother Christian with your high and mighty errand, Your actions speak
so loud, I can't hear a word you're saying."