Java网络编程和地址对象

Java网络编程和地址对象,java,inetaddress,Java,Inetaddress,我正在使用java套接字编程创建一个聊天应用程序。我想在我的本地网络中启动它,这意味着我的应用程序不需要互联网来运行。我使用 InetAddress.getLocalHost() 方法创建我的ip地址的Inetaddress对象。 现在,当我想用本地网络中的其他ip地址创建这个对象时,问题来了 经过一些实验,我知道还有另一个函数Inetaddress.getbyAddress(byte[]) 它将字节数组作为ip地址参数。现在如果我想创建一个 InetAddressip地址的对象 192.168

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

InetAddress.getLocalHost()

方法创建我的ip地址的Inetaddress对象。 现在,当我想用本地网络中的其他ip地址创建这个对象时,问题来了

经过一些实验,我知道还有另一个函数
Inetaddress.getbyAddress(byte[])

它将字节数组作为ip地址参数。现在如果我想创建一个
InetAddress
ip地址的对象
192.168.234.190
我不能。。。从那以后。 字节数组最多只能保存127个值

怎么办


提前感谢…

您可以使用
InetAddress.getByName(“192.168.234.190”)或者如果您确实想使用GetByAddress:

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)

否,字节包含位模式为0x00到0xff的对象。Java将它们解释为有符号的,但您仍然可以在每个字节中存储256个不同的位模式。但是当我尝试打印该数组中的值时,我得到了-64-88-22 1!!!但不是那些价值观。。。。这是怎么可能的…字节(在java中)数据类型是一个8位有符号2的补码()整数。128表示为-127,因为第一位是1,这意味着它是一个负数。无符号表示仍然是128。192也一样,有符号64和无符号192。是的,是的,我知道。。。但是,如何将剩余值存储到255位呢?这些“字节”只是几个(8)位(0或1)。是JVM(或Java规范或Java)将这些位解释为-128到127之间的数字(一个字节是有符号的)。因此,如果你将192存储为一个字节或-64,这两者都将是相同的位模式,但在一种情况下,第一位被用作符号位(参见我上面的维基百科链接)。那么我不能存储一个大于127的值吗。。。???因为我无法理解如何创建一个字节数组来保存位值超过127的ip地址创建INetAddress对象需要此字节数组…请告诉我Burkhard..:(