diff --git a/src/main/java/cc/baka9/catseedlogin/bungee/Communication.java b/src/main/java/cc/baka9/catseedlogin/bungee/Communication.java index 65c89da..32d3cd2 100644 --- a/src/main/java/cc/baka9/catseedlogin/bungee/Communication.java +++ b/src/main/java/cc/baka9/catseedlogin/bungee/Communication.java @@ -1,13 +1,13 @@ package cc.baka9.catseedlogin.bungee; -import cc.baka9.catseedlogin.util.CommunicationAuth; -import net.md_5.bungee.api.ProxyServer; - import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.Socket; +import cc.baka9.catseedlogin.util.CommunicationAuth; +import net.md_5.bungee.api.ProxyServer; + /** * bc 与 bukkit 的通讯交流 */ @@ -16,33 +16,21 @@ public class Communication { private static final int PORT = Config.Port; public static int sendConnectRequest(String playerName) { - try (Socket socket = getSocket(); BufferedWriter bufferedWriter = getSocketBufferedWriter(socket)) { - bufferedWriter.write("Connect"); - bufferedWriter.newLine(); - bufferedWriter.write(playerName); - bufferedWriter.newLine(); - bufferedWriter.flush(); + try (Socket socket = getSocket(); BufferedWriter writer = getSocketBufferedWriter(socket)) { + writeMessage(writer, "Connect", playerName); return socket.getInputStream().read(); } catch (IOException e) { handleIOException(e); + return 0; } - return 0; } public static void sendKeepLoggedInRequest(String playerName) { - try (Socket socket = getSocket(); BufferedWriter bufferedWriter = getSocketBufferedWriter(socket)) { - bufferedWriter.write("KeepLoggedIn"); - bufferedWriter.newLine(); - bufferedWriter.write(playerName); - bufferedWriter.newLine(); + try (Socket socket = getSocket(); BufferedWriter writer = getSocketBufferedWriter(socket)) { long currentTime = System.currentTimeMillis(); String time = String.valueOf(currentTime); - bufferedWriter.write(time); - bufferedWriter.newLine(); String sign = CommunicationAuth.encryption(playerName, time, Config.AuthKey); - bufferedWriter.write(sign); - bufferedWriter.newLine(); - bufferedWriter.flush(); + writeMessage(writer, "KeepLoggedIn", playerName, time, sign); } catch (IOException e) { handleIOException(e); } @@ -53,7 +41,7 @@ private static Socket getSocket() throws IOException { return new Socket(HOST, PORT); } catch (IOException e) { ProxyServer.getInstance().getLogger().warning("§c请检查装载登录插件的子服是否在 bungeecord.yml 中开启了bungeecord功能,以及Host和Port是否与bc端的配置相同"); - throw new IOException(e); + throw e; } } @@ -61,7 +49,15 @@ private static BufferedWriter getSocketBufferedWriter(Socket socket) throws IOEx return new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); } + private static void writeMessage(BufferedWriter writer, String... messages) throws IOException { + for (String message : messages) { + writer.write(message); + writer.newLine(); + } + writer.flush(); + } + private static void handleIOException(IOException e) { ProxyServer.getInstance().getLogger().severe("发生 I/O 异常: " + e.getMessage()); } -} \ No newline at end of file +}