1

AC#IPアドレス制御という名前のコンポーネントを使おうとしていますが、問題があると思います。値を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アドレスはネットワークバイトオーダー(ビッグエンディアン)で保存されますが、Intelプラットフォームの整数はリトルエンディアンです。

于 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 に答える