2012-03-24 24 views
0

私は、Javaソケットプログラミングを使用してチャットアプリケーションを作成しています。ローカルネットワークで起動したいのです。つまり、アプリケーションを実行するためにインターネットを必要としません。私は自分のIPアドレスのInetAddressオブジェクトを作成するためにJavaネットワークプログラミングInetAddressオブジェクト

InetAddress.getLocalHost();

方法を使って、自分のコンピュータ自体でアプリケーションをテストしました。私は、ローカルネットワーク内の他のIPアドレスを持つこのオブジェクトを作成する場合さて、問題が来る ..

は、いくつかの実験の後、私は、IPとしてバイト配列を受け取り、別の関数Inetaddress.getbyAddress(byte[]);

があることを知っているようになりましたアドレスの引数。今私が InetAddressのIPアドレスのオブジェクトを作成したい場合 192.168.234.190私はできません。 バイト配列には127までの値しか保持されません!!

どうすればよいですか?事前に

おかげで...あなたは本当にgetByAdressを使用したい場合は

+0

いいえ、バイトは0x00〜0xffのビットパターンを持つオブジェクトを保持します。 Javaはそれらを符号付きとして解釈しますが、各バイトには256の異なるビットパターンを保存することができます。 –

答えて

2

あなたはInetAddress.getByName("192.168.234.190");を使用したりできます。今すぐ

byte IP[]= new byte[]{(byte)192,(byte)168,(byte)234,1}); 

:IPは次のよ​​うに保存することができ

InetAddress.getByAddress(new byte[]{(byte)192,(byte)168,(byte)234,1}); 

あなたは、IPという名前のバイト配列のIPを持っていて、複数回呼び出すことができます。InetAddress.getByAddress(IP);

+0

しかし、その配列の値を印刷しようとすると、-64 -88 -22 1になってしまいます!これらの値はありません....どのようにこれが可能です... – nitish712

+0

バイト(Javaの)データ型は、8ビットの符号付き2の補数(http://en.wikipedia.org/wiki/Two%27s_complement)整数です。 128は-127と表されます。なぜなら、最初のビットは1であることを意味します。つまり、負の数です。符号なしの表現はまだ128です。符号付きの-64と符号なしの192の場合と同じです。 – Burkhard

+0

そうですね...残りの値を255まで保存する方法 – nitish712

関連する問題