1

我正在尝试使用一个名为 AC# IP Address Control 的组件,但我认为它有一个问题。因为当我将其值增加 1 时,它会给我一些错误的结果。例如

ipAddressControl3.Text = "192.168.1.25";
IPAddress ipAddress1 = new IPAddress(ipAddressControl3.GetAddressBytes());
ipAddress1.Address++;
MessageBox.Show(ipAddress1.ToString());

返回:“193.168.1.25”!但我希望“192.168.1.26”

问题是什么 ?

这是组件链接:AC# IP 地址控制

编辑:也许像这样的解决方案,但我无法实现它..

4

3 回答 3

2

我将我的 ip 大端转换为这样的小端:

int ipaddress= IPAddress.NetworkToHostOrder(BitConverter.ToInt32(IPAddress.Parse(ipAddressControl3.Text).GetAddressBytes(), 0));

它工作。

于 2010-08-15T10:38:57.577 回答
1

IP 地址以网络字节顺序(big-endian)存储,而 Intel 平台上的整数是 little-endian。

于 2010-08-14T10:38:01.080 回答
1

尝试这个:

ipAddressControl3.Text = "192.168.1.25";

byte[] ip = ipAddressControl3.GetAddressBytes();
ip[3] = (byte) (++ip[3]);

IPAddress ipAddress1 = new IPAddress(ip);
MessageBox.Show(ipAddress1.ToString());
于 2010-08-14T11:26:19.853 回答