1
그래서 나는이 기능을 가지고 :소켓 로깅이 요청하지
그것은 작동하지만 다음 그것의 많은 로그를 채워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"인 경우 이러한 문자 중 3 개가 각 문자에 대해 하나씩 기록됩니다.
로거가 보이지 않는데, 어디에서 신고합니까? \ – hexafraction
왜 비어있는 캐치가 있습니까?! –
누가 로그했는지 알아야합니다. 어느 도서관을 이용합니까? Log4j, slf4j ... 범주를 인쇄하도록 구성해야합니다. 그러면 누가 책임이 있는지 알 수 있습니다. 그런 다음이 메시지를 수정하거나 로깅을 구성하여 이러한 메시지를 숨길 수 있습니다. –