Bug fixing

This commit is contained in:
2024-07-28 16:51:34 +02:00
parent 7c556bae5b
commit ada261b544
5 changed files with 72 additions and 18 deletions

View File

@@ -29,6 +29,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException;
public class NetworkClient extends DefaultMethodsOverrider { public class NetworkClient extends DefaultMethodsOverrider {
@@ -42,7 +43,7 @@ public class NetworkClient extends DefaultMethodsOverrider {
private int maxReconnectAttempts = 0; private int maxReconnectAttempts = 0;
private int reconnectDelay = 3000; private int reconnectDelay = 3000;
private int timeout = 3000; private int timeout = 0;
public final NetworkClient build() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { public final NetworkClient build() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
return new NetworkClient(host, port ,packetHandler, eventManager, logger, maxReconnectAttempts, reconnectDelay, timeout); return new NetworkClient(host, port ,packetHandler, eventManager, logger, maxReconnectAttempts, reconnectDelay, timeout);
@@ -210,7 +211,7 @@ public class NetworkClient extends DefaultMethodsOverrider {
eventManager.executeEvent(new C_DisconnectedEvent(this)); eventManager.executeEvent(new C_DisconnectedEvent(this));
if (logger == null) System.out.println("Disconnected from server"); if (logger == null) System.out.println("Disconnected from server");
else logger.info("Disconnected from server..."); else logger.info("Disconnected from serverß");
if (maxReconnectAttempts != 0) { if (maxReconnectAttempts != 0) {
try { try {
@@ -230,8 +231,8 @@ public class NetworkClient extends DefaultMethodsOverrider {
public synchronized final boolean connect() { public synchronized final boolean connect() {
if (isConnected()) return false; if (isConnected()) return false;
if (logger == null) System.out.println("Trying to connect to " + host + ":" + port); if (logger == null) System.out.println("Trying to connect to " + host + ":" + port + "...");
else logger.info("Trying to connect to " + host + ":" + port); else logger.info("Trying to connect to " + host + ":" + port + "...");
try { try {
socket = new Socket(host, port); socket = new Socket(host, port);
@@ -301,7 +302,11 @@ public class NetworkClient extends DefaultMethodsOverrider {
eventManager.executeEvent(new C_PacketReceivedEvent(this, packet)); eventManager.executeEvent(new C_PacketReceivedEvent(this, packet));
else eventManager.executeEvent(new C_PacketFailedReceivedEvent(this, packet, null)); else eventManager.executeEvent(new C_PacketFailedReceivedEvent(this, packet, null));
} else eventManager.executeEvent(new C_UnknownObjectReceivedEvent(this, received)); } else eventManager.executeEvent(new C_UnknownObjectReceivedEvent(this, received));
} catch (SocketException ignored) {
disconnect(false);
return;
} catch (IOException | ClassNotFoundException exception) { } catch (IOException | ClassNotFoundException exception) {
exception.printStackTrace();
if (logger == null) System.err.println("Receive thread failed: " + exception.getMessage()); if (logger == null) System.err.println("Receive thread failed: " + exception.getMessage());
else logger.exception("Receive thread failed", exception); else logger.exception("Receive thread failed", exception);

View File

@@ -24,6 +24,7 @@ import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException;
public class ConnectionHandler { public class ConnectionHandler {
@@ -89,8 +90,8 @@ public class ConnectionHandler {
} }
public synchronized boolean disconnect(boolean sendDisconnectPacket) { public synchronized boolean disconnect(boolean sendDisconnectPacket) {
if (server.getLogger() == null) System.out.println("Disconnecting from server..."); if (server.getLogger() == null) System.out.println("Client ID '" + clientID + "' is disconnecting from server...");
else server.getLogger().info("Disconnecting from server..."); else server.getLogger().info("Client ID '" + clientID + "' is disconnecting from server...");
receiveThread.interrupt(); receiveThread.interrupt();
@@ -102,8 +103,8 @@ public class ConnectionHandler {
inputStream.close(); inputStream.close();
socket.close(); socket.close();
} catch (IOException exception) { } catch (IOException exception) {
if (server.getLogger() == null) System.err.println("Failed to close socket: " + exception.getMessage()); if (server.getLogger() == null) System.err.println("Client ID '" + clientID + "' failed to close socket: " + exception.getMessage());
else server.getLogger().exception("Failed to close socket", exception); else server.getLogger().exception("Client ID '" + clientID + "' failed to close socket", exception);
} }
} }
@@ -115,8 +116,8 @@ public class ConnectionHandler {
clientID = -1; clientID = -1;
server.getEventManager().executeEvent(new S_ConnectionHandlerDisconnectedEvent(this)); server.getEventManager().executeEvent(new S_ConnectionHandlerDisconnectedEvent(this));
if (server.getLogger() == null) System.out.println("Disconnected from server"); if (server.getLogger() == null) System.out.println("Client ID '" + clientID + "' disconnected from server");
else server.getLogger().info("Disconnected from server..."); else server.getLogger().info("Client ID '" + clientID + "' disconnected from server");
return true; return true;
} }
@@ -135,9 +136,12 @@ public class ConnectionHandler {
server.getEventManager().executeEvent(new S_PacketReceivedEvent(this, packet)); server.getEventManager().executeEvent(new S_PacketReceivedEvent(this, packet));
else server.getEventManager().executeEvent(new S_PacketFailedReceivedEvent(this, packet, null)); else server.getEventManager().executeEvent(new S_PacketFailedReceivedEvent(this, packet, null));
} else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(this, received)); } else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(this, received));
} catch (SocketException ignored) {
disconnect(false);
return;
} catch (IOException | ClassNotFoundException exception) { } catch (IOException | ClassNotFoundException exception) {
if (server.getLogger() == null) System.err.println("Receive thread failed: " + exception.getMessage()); if (server.getLogger() == null) System.err.println("Client ID '" + clientID + "' received thread failed: " + exception.getMessage());
else server.getLogger().exception("Receive thread failed", exception); else server.getLogger().exception("Client ID '" + clientID + "' received thread failed", exception);
server.getEventManager().executeEvent(new S_ReceiveThreadFailedEvent(this, exception)); server.getEventManager().executeEvent(new S_ReceiveThreadFailedEvent(this, exception));
} }

View File

@@ -40,7 +40,7 @@ public class NetworkServer extends DefaultMethodsOverrider {
private int maxRestartAttempts = 0; private int maxRestartAttempts = 0;
private int restartDelay = 3000; private int restartDelay = 3000;
private int timeout = 3000; private int timeout = 0;
public final NetworkServer build() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { public final NetworkServer build() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
return new NetworkServer(port, packetHandler, eventManager, logger, maxRestartAttempts, restartDelay, timeout); return new NetworkServer(port, packetHandler, eventManager, logger, maxRestartAttempts, restartDelay, timeout);
@@ -156,8 +156,8 @@ public class NetworkServer extends DefaultMethodsOverrider {
public synchronized final boolean stop() { public synchronized final boolean stop() {
if (!isRunning()) return false; if (!isRunning()) return false;
if (logger == null) System.out.println("Trying to stop server"); if (logger == null) System.out.println("Trying to stop server...");
else logger.info("Trying to stop server"); else logger.info("Trying to stop server...");
new ArrayList<>(connectionHandlers).forEach(connectionHandler -> connectionHandler.disconnect(true)); new ArrayList<>(connectionHandlers).forEach(connectionHandler -> connectionHandler.disconnect(true));
connectionHandlers.clear(); connectionHandlers.clear();
@@ -176,8 +176,8 @@ public class NetworkServer extends DefaultMethodsOverrider {
public synchronized final boolean start() { public synchronized final boolean start() {
if (isRunning()) return false; if (isRunning()) return false;
if (logger == null) System.out.println("Trying to start on port " + port); if (logger == null) System.out.println("Trying to start on port " + port + "...");
else logger.info("Trying to start on port " + port); else logger.info("Trying to start on port " + port + "...");
try { try {
serverSocket = new ServerSocket(port); serverSocket = new ServerSocket(port);
@@ -186,7 +186,7 @@ public class NetworkServer extends DefaultMethodsOverrider {
incomingConnectionThread.start(); incomingConnectionThread.start();
if (currentAttempts == 0) currentAttempts++; if (currentAttempts == 0) currentAttempts++;
if (logger == null) System.out.println("Started ad port" + port + " (Attempts: " + currentAttempts + ")"); if (logger == null) System.out.println("Started at port " + port + " (Attempts: " + currentAttempts + ")");
else logger.info("Started at port " + port + " (Attempts: " + currentAttempts + ")"); else logger.info("Started at port " + port + " (Attempts: " + currentAttempts + ")");
currentAttempts = 0; currentAttempts = 0;

View File

@@ -0,0 +1,22 @@
/*
* Copyright (C) 2024 UnlegitDqrk - All Rights Reserved
*
* You are unauthorized to remove this copyright.
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
* See LICENSE-File if exists
*/
package tests;
import me.finn.unlegitlibrary.event.EventManager;
import me.finn.unlegitlibrary.network.system.client.NetworkClient;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.lang.reflect.InvocationTargetException;
public class Client {
public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
new NetworkClient.ClientBuilder().setPacketHandler(new PacketHandler()).setEventManager(new EventManager()).
setHost("localhost").setPort(25565).build().connect();
}
}

View File

@@ -0,0 +1,23 @@
/*
* Copyright (C) 2024 UnlegitDqrk - All Rights Reserved
*
* You are unauthorized to remove this copyright.
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
* See LICENSE-File if exists
*/
package tests;
import me.finn.unlegitlibrary.event.EventManager;
import me.finn.unlegitlibrary.network.system.client.NetworkClient;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import me.finn.unlegitlibrary.network.system.server.NetworkServer;
import java.lang.reflect.InvocationTargetException;
public class Server {
public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
new NetworkServer.ServerBuilder().setPacketHandler(new PacketHandler()).setEventManager(new EventManager()).
setPort(25565).build().start();
}
}