Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > UDP socket receive question

Reply
Thread Tools

UDP socket receive question

 
 
Martin Pirker
Guest
Posts: n/a
 
      10-22-2004
Hello...

Copying the minimalistic UDP receive example from the online Pickaxe I

require 'socket'
port = 12000
server = UDPSocket.open
server.bind(nil, port)
loop do
text,sender = server.recvfrom(1024)
puts text
end


localhost --> localhost UDP connections work fine


so I tried connecting 2 different boxes
check network connection by netcat:

sender: echo "whatever" |netcat -u 192.168.x.y 12000
receiver: netcat -u -l -p 12000
connection is ok

receiver netcat and sender Ruby script work ok, too


but, with receiver Ruby (like above) neither sender netcat nor Ruby
script are able to make a transfer -> Ruby receiver drops pakets?!?

lsof shows a "UDP localhost:12000" binding, so everything should be ok
on the receiving side


Question:
I simply want a Ruby script collecting all UDP pakets arriving at a
specific port, above script only works for me localhost-->localhost
why?


ruby 1.8.2 (2004-07-16) [i686-linux] (aka pre1)


thanks for any hint, I'm out of ideas
Martin
 
Reply With Quote
 
 
 
 
Joel VanderWerf
Guest
Posts: n/a
 
      10-23-2004
Martin Pirker wrote:
> Hello...
>
> Copying the minimalistic UDP receive example from the online Pickaxe I
>
> require 'socket'
> port = 12000
> server = UDPSocket.open
> server.bind(nil, port)

^^^
Try a hostname here? You can use the string '<any>'. I guess that means
any interface.

> loop do
> text,sender = server.recvfrom(1024)
> puts text
> end
>
>
> localhost --> localhost UDP connections work fine
>
>
> so I tried connecting 2 different boxes
> check network connection by netcat:
>
> sender: echo "whatever" |netcat -u 192.168.x.y 12000
> receiver: netcat -u -l -p 12000
> connection is ok
>
> receiver netcat and sender Ruby script work ok, too
>
>
> but, with receiver Ruby (like above) neither sender netcat nor Ruby
> script are able to make a transfer -> Ruby receiver drops pakets?!?
>
> lsof shows a "UDP localhost:12000" binding, so everything should be ok
> on the receiving side
>
>
> Question:
> I simply want a Ruby script collecting all UDP pakets arriving at a
> specific port, above script only works for me localhost-->localhost
> why?
>
>
> ruby 1.8.2 (2004-07-16) [i686-linux] (aka pre1)
>
>
> thanks for any hint, I'm out of ideas
> Martin



 
Reply With Quote
 
 
 
 
Eric Hodel
Guest
Posts: n/a
 
      10-23-2004
--Apple-Mail-1--15181070
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII; format=flowed

On Oct 22, 2004, at 9:34 PM, Joel VanderWerf wrote:

> Martin Pirker wrote:
>> Hello...
>> Copying the minimalistic UDP receive example from the online Pickaxe I
>> require 'socket'
>> port = 12000
>> server = UDPSocket.open
>> server.bind(nil, port)

> ^^^
> Try a hostname here? You can use the string '<any>'. I guess that
> means any interface.


No. nil means bind to all interfaces. See getaddrinfo(3).

--
Eric Hodel - http://www.velocityreviews.com/forums/(E-Mail Removed) - http://segment7.net
All messages signed with fingerprint:
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04


--Apple-Mail-1--15181070
content-type: application/pgp-signature; x-mac-type=70674453;
name=PGP.sig
content-description: This is a digitally signed message part
content-disposition: inline; filename=PGP.sig
content-transfer-encoding: 7bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Darwin)

iD8DBQFBeo9EMypVHHlsnwQRAkbWAJ0W3LHh3WFkk1VDZkTbFw K7z6JNbwCfa4kV
Ns7YxZ7LVleh77FJ2UU01ms=
=hlFS
-----END PGP SIGNATURE-----

--Apple-Mail-1--15181070--


 
Reply With Quote
 
Joel VanderWerf
Guest
Posts: n/a
 
      10-23-2004
Eric Hodel wrote:
> On Oct 22, 2004, at 9:34 PM, Joel VanderWerf wrote:
>
>> Martin Pirker wrote:
>>
>>> Hello...
>>> Copying the minimalistic UDP receive example from the online Pickaxe I
>>> require 'socket'
>>> port = 12000
>>> server = UDPSocket.open
>>> server.bind(nil, port)

>>
>> ^^^
>> Try a hostname here? You can use the string '<any>'. I guess that
>> means any interface.

>
>
> No. nil means bind to all interfaces. See getaddrinfo(3).


Ok, but UDPSocket#bind accepts '<any>' as well. It appears (from brief
groping in etx/socket/socket.c) that nil and '<any>' are synonyms. So
substituting one for the other will not make a difference in the problem
the OP was trying to fix.


 
Reply With Quote
 
Martin Pirker
Guest
Posts: n/a
 
      10-23-2004
Joel VanderWerf <(E-Mail Removed)> wrote:
> Eric Hodel wrote:
>> On Oct 22, 2004, at 9:34 PM, Joel VanderWerf wrote:
>>> Martin Pirker wrote:
>>>> Copying the minimalistic UDP receive example from the online Pickaxe I
>>>> require 'socket'
>>>> port = 12000
>>>> server = UDPSocket.open
>>>> server.bind(nil, port)
>>> ^^^
>>> Try a hostname here? You can use the string '<any>'. I guess that
>>> means any interface.

>>
>> No. nil means bind to all interfaces. See getaddrinfo(3).

>
> Ok, but UDPSocket#bind accepts '<any>' as well. It appears (from brief
> groping in etx/socket/socket.c) that nil and '<any>' are synonyms. So
> substituting one for the other will not make a difference in the problem
> the OP was trying to fix.



but it does fix it

nil gives a "UDP localhost:12000" binding according to lsof

"<any>" and "" gives a "UDP *:12000" binding and appears to work as
expected => accepts any packet arriving from any sender at this port


question is, why I didn't find this myself?

I assumed nothing set aka nil means "don't bind to anything, accept
everything", so I just copied from the example
reading the "socket-level access" paragraph at the beginning points
one to "" as INADDR_ANY, but nowhere a word of "<any>" or a definiton
of nil ?

thanks! always nice&helpful ppl here,
Martin
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
receive udp packets on windows xp Andrew Chin Java 3 12-08-2005 05:21 AM
Socket() failed for UDP socket Kishore_R Perl Misc 2 10-11-2005 08:57 AM
udp (0) -> udp (0) traffic ? Tom Cisco 2 03-04-2004 06:06 PM
Re: How to format/send/receive UDP packet in C? jrlatala@shell.golden.net C Programming 0 06-24-2003 02:39 AM
Re: How to format/send/receive UDP packet in C? Tom St Denis C Programming 0 06-24-2003 12:25 AM



Advertisments