所以我有这个功能:
public HashMap<String, Object> ping(String ip, int port) {
try {
Socket sock = new Socket();
sock.setSoTimeout(1000);
sock.connect(new InetSocketAddress(ip, port), 1000);
DataOutputStream out = new DataOutputStream(sock.getOutputStream());
DataInputStream in = new DataInputStream(sock.getInputStream());
out.write(0xFE);
int b;
StringBuilder str = new StringBuilder();
while ((b = in.read()) != -1) {
if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
str.append((char) b);
System.out.println(b + ":" + ((char) b));
}
}
String[] data = str.toString().split("§");
String serverMotd = data[0];
int onlinePlayers = Integer.parseInt(data[1]);
int maxPlayers = Integer.parseInt(data[2]);
HashMap<String, Object> map = new HashMap<>();
map.put("motd", serverMotd);
map.put("online", onlinePlayers);
map.put("max", maxPlayers);
return map;
} catch (UnknownHostException e) {
} catch (IOException e) {
}
return null;
}
它可以工作,但用以下内容和大量内容填充日志。我怎么能摆脱这个?
[13:26:41 INFO]: 32:
[13:26:44 INFO]: 115:s
[13:26:44 INFO]: 32:
[13:26:44 INFO]: 38:&
[13:26:44 INFO]: 114:r
[13:26:44 INFO]: 105:i
忽略这一点:我非常确定这是一个简单的解决方案所以我只是填补空间,因为看起来我的答案主要是代码,但我还有更多要说的。
更新:号码后面的每个字符都是响应的一部分。例如,如果它是一个字符串“lol”,将记录其中三个消息,每个字母一个。
答案 0 :(得分:2)
它看起来像是system.out的内容。应用程序服务器将标准输出和错误流重定向到其日志。如果你想摆脱它,那就注释掉那条线。
System.out.println(b + ":" + ((char) b));