From: Eleanor McHugh Date: 2009-03-01T04:12:14+09:00 Subject: Re: Gets the broadcast address of an IP address 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