# Succ question of ip addr string

**URL:** <https://www.ruby-forum.com/t/succ-question-of-ip-addr-string/126444>\
**Category:** Ruby\
**Created:** [January 18, 2008, 10:23am UTC](https://www.ruby-forum.com/t/succ-question-of-ip-addr-string/126444 "2008-01-18T10:23:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ak756](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5a626/32.png) [@ak756](https://www.ruby-forum.com/u/ak756)\
**Post date:** [January 18, 2008, 10:23am UTC](https://www.ruby-forum.com/t/succ-question-of-ip-addr-string/126444/1 "2008-01-18T10:23:03Z")

</div>

Hi

I have a ip addr string as “192.168.000.000”, I use succ! method to get  
the next ip addr string. It works for the first 255 times but when ip  
reachs “192.168.000.255”, the succ! returns “192.168.000.256” but what I  
want is “192.168.001.000”. Would anyone kindly help to tell me how to  
do?

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![ak756](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5a626/32.png) [@ak756](https://www.ruby-forum.com/u/ak756)\
**Post date:** [January 18, 2008, 3:17pm UTC](https://www.ruby-forum.com/t/succ-question-of-ip-addr-string/126444/2 "2008-01-18T15:17:07Z")

</div>

On Fri, 2008-01-18 at 18:22 +0900, Ak 756 wrote:

> Hi
> 
> I have a ip addr string as “192.168.000.000”, I use succ! method to get  
> the next ip addr string. It works for the first 255 times but when ip  
> reachs “192.168.000.255”, the succ! returns “192.168.000.256” but what I  
> want is “192.168.001.000”. Would anyone kindly help to tell me how to  
> do?
> 
> Thanks in advance.

Instead of strings, use the IPAddr core class to represent IP addresses.  
While it doesn’t have a built in method for determining the next IP  
address, you can add the functionality like so:

$ irb  
irb(main):001:0\> require ‘ipaddr’  
=\> true  
irb(main):002:0\> class IPAddr  
irb(main):003:1\> def succ!  
irb(main):004:2\> @addr += 1  
irb(main):005:2\> self  
irb(main):006:2\> end  
irb(main):007:1\> end  
=\> nil  
irb(main):008:0\> a = IPAddr.new(‘192.168.0.255’)  
=\> #\<IPAddr: IPv4:192.168.0.255/255.255.255.255\>  
irb(main):009:0\> a.succ!  
=\> #\<IPAddr: IPv4:192.168.1.0/255.255.255.255\>  
irb(main):010:0\>

HTH,

Felix

---

<div class="post-metadata">

**Author:** ![ak756](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5a626/32.png) [@ak756](https://www.ruby-forum.com/u/ak756)\
**Post date:** [January 18, 2008, 4:07pm UTC](https://www.ruby-forum.com/t/succ-question-of-ip-addr-string/126444/3 "2008-01-18T16:07:21Z")

</div>

fw wrote:

> On Fri, 2008-01-18 at 18:22 +0900, Ak 756 wrote:  
> irb(main):001:0\> require ‘ipaddr’  
> =\> true  
> irb(main):002:0\> class IPAddr  
> irb(main):003:1\> def succ!  
> irb(main):004:2\> @addr += 1  
> irb(main):005:2\> self  
> irb(main):006:2\> end  
> irb(main):007:1\> end  
> =\> nil  
> irb(main):008:0\> a = IPAddr.new(‘192.168.0.255’)  
> =\> #\<IPAddr: IPv4:192.168.0.255/255.255.255.255\>  
> irb(main):009:0\> a.succ!  
> =\> #\<IPAddr: IPv4:192.168.1.0/255.255.255.255\>  
> irb(main):010:0\>
> 
> HTH,
> 
> Felix

Hi Felix

It works. Thank you very much!
