gpt4 book ai didi

java - 将字符串转换为字节时,addr 的长度非法

转载 作者:行者123 更新时间:2023-12-01 15:00:51 25 4
gpt4 key购买 nike

我正在为一个 friend 编写一个游戏(《我的世界》)的模组。为了执行 mod 的指定功能,我需要确保在特定时间内可以访问服务器,我使用 InetAddress 来执行此操作,但每次使用该命令时都会收到此错误

2012-12-02 18:45:53 [INFO] [STDERR] java.net.UnknownHostException: addr is of illegal length
2012-12-02 18:45:53 [INFO] [STDERR] at java.net.InetAddress.getByAddress(Unknown Source)
2012-12-02 18:45:53 [INFO] [STDERR] at java.net.InetAddress.getByAddress(Unknown Source)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.CommandServSwitch.processCommand(CommandServSwitch.java:40)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.CommandHandler.executeCommand(CommandHandler.java:81)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.NetServerHandler.handleSlashCommand(NetServerHandler.java:715)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.NetServerHandler.handleChat(NetServerHandler.java:681)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.Packet3Chat.processPacket(Packet3Chat.java:60)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:79)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.NetServerHandler.networkTick(NetServerHandler.java:82)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.NetworkListenThread.networkTick(NetworkListenThread.java:55)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:111)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:696)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:592)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.IntegratedServer.tick(IntegratedServer.java:110)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:499)
2012-12-02 18:45:53 [INFO] [STDERR] at net.minecraft.src.ThreadMinecraftServer.run(ThreadMinecraftServer.java:17)

生成此错误的方法(以及您需要了解的所有代码):

    @Override
public void processCommand(ICommandSender var1, String[] var2) {
if(var2.length < 1 || var2.length > 3) {
throw new WrongUsageException("command.switch.usage", new Object[0]);
}
else {
servport = Integer.parseInt(var2[1]);

boolean ping = false;
try {
InetAddress IP = InetAddress.getByAddress(var2[0].getBytes());
ping = IP.isReachable(400);
} catch(UnknownHostException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}

最佳答案

getByAddress 的文档说:“返回一个 InetAddress 对象给定原始 IP 地址。参数按网络字节顺序:地址的最高顺序字节位于 getAddress()[0] ”

            InetAddress IP = InetAddress.getByAddress(var2[0].getBytes());

这行代码没有任何意义。该字符串不是函数所需的网络字节顺序的原始 IP 地址。否则,它的长度将恰好是四个字节。

您需要调用InetAddress.getByName从文本字符串(如 foo.domain.com1.2.3.4)转换为内部二进制格式。

关于java - 将字符串转换为字节时,addr 的长度非法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com