日期:2014-05-16  浏览次数:21164 次

如何把IP地址的最后一位加1
    我有个ip地址: 192.168.1.100 ; 
char ip[16]=“192.168.1.100”;
我想把最后一位加1 变成 192.168.1.101; 
请问在代码中怎么实现?

------解决方案--------------------
字节序问题
 ipp += 0x01000000
------解决方案--------------------
网络字节序是big endian,intel处理器是little endian,所以192.168.1.100 inet_addr后在处理器看来 就是0x6401A8C0,正好是倒过来的

比较正规的做法是你在ipp+=1之前先调用uint32_t ntohl(uint32_t netlong)把网络字节序转化成主机字节序,在ipp+=1之后调用inet_ntoa之前,再调用uint32_t htonl(uint32_t hostlong)把主机字节序转成网络字节序

这样就无所谓任何处理器都不会出错了