Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Gets the broadcast address of an IP address

Reply
Thread Tools

Gets the broadcast address of an IP address

 
 
Sai Hl
Guest
Posts: n/a
 
      02-28-2009
Hi Ruby communauty. I am trying to broadcast a message using UDPSocket
on destination port 10000. My code is:

client = UDPSocket.new
client.connect Socket.gethostname, 10000
client.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
client.send data, 0

But my packet is not a broadcast, its address is the same as my host:
192.168.0.101

In order to do so on the external interface of my system (named en0), I
had remplaced this:
client.connect Socket.gethostname, 10000
by this:
client.connect "192.168.0.255", 10000

And now this is working. But is there a way to get automatically the
"192.168.0.255" address thanks to a Ruby method? I know I can get my IP
with IPSocket.getaddress(Socket.gethostname) but I don't see any way to
gets its broadcast address.

Thanks
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Eleanor McHugh
Guest
Posts: n/a
 
      02-28-2009
On 28 Feb 2009, at 16:20, Sai Hl wrote:
> Hi Ruby communauty. I am trying to broadcast a message using
> UDPSocket
> on destination port 10000. My code is:
>
> client = UDPSocket.new
> client.connect Socket.gethostname, 10000
> client.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
> client.send data, 0
>
> But my packet is not a broadcast, its address is the same as my host:
> 192.168.0.101
>
> In order to do so on the external interface of my system (named
> en0), I
> had remplaced this:
> client.connect Socket.gethostname, 10000
> by this:
> client.connect "192.168.0.255", 10000
>
> And now this is working. But is there a way to get automatically the
> "192.168.0.255" address thanks to a Ruby method? I know I can get
> my IP
> with IPSocket.getaddress(Socket.gethostname) but I don't see any way
> to
> gets its broadcast address.
>
> Thanks



The simplest way to do it is to use a regex to change the last term in
the quad:

IPSocket.getaddress(Socket.gethostname).gsub!(/.\d{1,3}$/, '.255')


Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
----
raise ArgumentError unless @reality.responds_to? :reason



 
Reply With Quote
 
 
 
 
Hassan Schroeder
Guest
Posts: n/a
 
      02-28-2009
On Sat, Feb 28, 2009 at 11:12 AM, Eleanor McHugh
<(E-Mail Removed)> wrote:

>> ... But is there a way to get automatically the
>> "192.168.0.255" address thanks to a Ruby method? =A0I know I can get my =

IP
>> with IPSocket.getaddress(Socket.gethostname) but I don't see any way to
>> gets its broadcast address.


> The simplest way to do it is to use a regex to change the last term in th=

e
> quad:
>
> IPSocket.getaddress(Socket.gethostname).gsub!(/.\d{1,3}$/, '.255')


Simple but not necessarily correct

<http://learn-networking.com/network-design/how-a-broadcast-address-works>

FWIW,
--=20
Hassan Schroeder ------------------------ http://www.velocityreviews.com/forums/(E-Mail Removed)

 
Reply With Quote
 
Eleanor McHugh
Guest
Posts: n/a
 
      02-28-2009
On 28 Feb 2009, at 22:49, Hassan Schroeder wrote:
> On Sat, Feb 28, 2009 at 11:12 AM, Eleanor McHugh
> <(E-Mail Removed)> wrote:
>
>>> ... But is there a way to get automatically the
>>> "192.168.0.255" address thanks to a Ruby method? I know I can get
>>> my IP
>>> with IPSocket.getaddress(Socket.gethostname) but I don't see any
>>> way to
>>> gets its broadcast address.

>
>> The simplest way to do it is to use a regex to change the last term
>> in the
>> quad:
>>
>> IPSocket.getaddress(Socket.gethostname).gsub!(/.\d{1,3}$/, '.255')

>
> Simple but not necessarily correct
>
> <http://learn-networking.com/network-...-address-works
> >


True, but I'm not sure the general case is so easy on the eye ;p

subnet_mask = [ 255, 255, 255, 0 ]
IPSocket
getaddress(Socket.gethostname).split('.').zip(subn et_mask).collect { |
(i, m)| ((~m) & 255) | i.to_i }.join(".")


Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
----
raise ArgumentError unless @reality.responds_to? :reason



 
Reply With Quote
 
Brian Candler
Guest
Posts: n/a
 
      03-01-2009
Eleanor McHugh wrote:
> On 28 Feb 2009, at 22:49, Hassan Schroeder wrote:
>>> The simplest way to do it is to use a regex to change the last term
>>> in the
>>> quad:
>>>
>>> IPSocket.getaddress(Socket.gethostname).gsub!(/.\d{1,3}$/, '.255')

>>
>> Simple but not necessarily correct
>>
>> <http://learn-networking.com/network-...-address-works
>> >

>
> True, but I'm not sure the general case is so easy on the eye ;p


This is messier than it should be, but:

require 'ipaddr'
n = IPAddr.new("192.168.0.101/24")
p n | (~n.instance_variable_get(:@mask_addr) & IPAddr::IN4MASK)

Or maybe you could just broadcast to the all-ones address
(255.255.255.255)
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Sai Hl
Guest
Posts: n/a
 
      03-01-2009
Brian Candler wrote:
> This is messier than it should be, but:
>
> require 'ipaddr'
> n = IPAddr.new("192.168.0.101/24")
> p n | (~n.instance_variable_get(:@mask_addr) & IPAddr::IN4MASK)
>
> Or maybe you could just broadcast to the all-ones address
> (255.255.255.255)


Yes, I had use the broadcast address
Finaly it's simple and efficient. But I think I will try your first
solution after to.

Thanks
--
Posted via http://www.ruby-forum.com/.

 
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
Return of gets gets John Joyce Ruby 0 04-23-2007 01:38 PM
gets gets John Joyce Ruby 2 03-26-2007 04:00 PM
XMLHttpRequest gets data to display in element but data gets appended not replaces previous! libsfan01 Javascript 5 12-20-2006 06:25 AM
Not only the selected HREF gets surrounded, but the whole row gets surrounded Stefan Mueller HTML 5 07-10-2006 11:53 AM
Is an IP address a broadcast address? AbraKadabra Java 2 09-21-2005 10:54 AM



Advertisments