forked from UnlegitDqrk/unlegitlibrary
Bug fixing
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
@@ -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));
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
22
src/main/java/tests/Client.java
Normal file
22
src/main/java/tests/Client.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
23
src/main/java/tests/Server.java
Normal file
23
src/main/java/tests/Server.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user