2012-03-24 30 views
0

我正在使用java套接字编程创建一个聊天应用程序。我想在我的本地网络中启动它,这意味着我的应用程序不需要互联网来运行。我使用Java网络编程InetAddress对象

InetAddress.getLocalHost();

方法来创建我的IP地址的InetAddress对象测试我的电脑本身上的应用。 现在,当我想创建与本地网络中的某些其他IP地址,这个对象问题就来了..

一些尝试后,我才知道,还有另外一个功能Inetaddress.getbyAddress(byte[]);

这需要字节数组作为IP地址参数。现在,如果我想创建一个ip地址的对象 InetAddress192.168.234.190我不能...因为。 字节数组只保存127个值!

该怎么办?

在此先感谢...

+0

不,一个字节保存位模式为0x00到0xff的对象。 Java将它们解释为已签名,但您仍然可以在每个字节中存储256个不同的位模式。 – 2012-03-24 08:34:34

回答

2

你可以使用InetAddress.getByName("192.168.234.190");或者,如果你真的想用getByAdress:

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

的IP可以存储这样的:

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

现在您在名为IP的字节阵列中拥有IP,并且您可以多次呼叫InetAddress.getByAddress(IP);

+0

但是当我尝试打印该数组中的值时,我得到-64 -88 -22 1!但不是那些值....这怎么可能... – nitish712 2012-05-31 05:08:28

+0

字节(在java中)数据类型是一个8位有符号二进制补码(http://en.wikipedia.org/wiki/Two%27s_complement)整数。 128表示为-127,因为第一位是1,这意味着它是负数。无符号表示仍然是128.同样的192是一个有符号的-64和无符号的192. – Burkhard 2012-05-31 05:53:34

+0

是啊是的,我知道...但是如何将剩余的值存储到255 – nitish712 2012-06-07 07:38:36