我知道InetAddress
长4个字节。是否可以使它长16个字节?我需要16个字节长然后我需要通过本地unix套接字上的OutputStream
发送它。谢谢!
c应用程序需要struct sockaddr_in
类型,其大小为16字节。
我尝试使用正确发送4个字节的byte[] ipBytes = InetAddress.getByName("153.16.12.1").getAddress();
,但我需要16个字节的等价(就好像它是一个发送数据长16个字节的sockaddr_in)。我尝试发送数据i c和java希望得到相同的outpt但事实并非如此。
编辑:这是我得到的2个输出。第一个由c编码文件生成并正确发送数据,而第二个案例是我尝试使用java发送相同的数据。我认为这不是一个问题,因为大多数角色都处于正确位置或靠近。
我收到n个字节:44
[ 68 01 07 00 01 00 00 00 01 00 1f ec 2d 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 99 10 0c 01 60 05 40 00 00 00 00 00 ]
我收到n个字节:48
[ 68 01 07 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 99 10 0c 01 ]
奇怪的是,我还获得了4个额外的字节。为什么呢?
答案 0 :(得分:2)
我猜你想通过IPv6传递IPv4地址。有一种称为IPv4 over Ipv6 address mapping的技术,您将IPv4地址作为地址的低位传递,如此
例如,:: ffff:192.0.2.128表示IPv4地址192.0.2.128