Legger til en del objekter for å teste kryonet funksjonalitet

This commit is contained in:
Kristian Knarvik 2020-03-12 11:17:42 +01:00
parent 2219ea3dbe
commit b0ebb2db3e
5 changed files with 128 additions and 0 deletions

View File

@ -0,0 +1,33 @@
package inf112.fiasko.roborally.networking;
import com.esotericsoftware.kryonet.Client;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import inf112.fiasko.roborally.utility.NetworkUtil;
import java.io.IOException;
public class RoboRallyClient {
public RoboRallyClient() throws IOException {
Client client = new Client();
client.start();
NetworkUtil.registerClasses(client.getKryo());
client.connect(5000, "127.0.0.1", 54555, 54777);
SomeRequest request = new SomeRequest();
request.text = "Here is the request";
client.sendTCP(request);
client.addListener(new RoboRallyClientListener());
}
}
class RoboRallyClientListener extends Listener {
@Override
public void received (Connection connection, Object object) {
if (object instanceof SomeResponse) {
SomeResponse response = (SomeResponse)object;
System.out.println("Client received: " + response.text);
}
}
}

View File

@ -0,0 +1,62 @@
package inf112.fiasko.roborally.networking;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.esotericsoftware.kryonet.Server;
import inf112.fiasko.roborally.utility.NetworkUtil;
import java.io.IOException;
public class RoboRallyServer {
private Server server;
public RoboRallyServer() throws IOException {
server = new Server();
server.start();
NetworkUtil.registerClasses(server.getKryo());
server.bind(54555, 54777);
server.addListener(new RoboRallyServerListener());
}
/**
* Sends an object to all clients
* @param object The object to send
*/
public void sendToAllClients(Object object) {
server.sendToAllTCP(object);
}
}
class RoboRallyServerListener extends Listener {
Connection host;
public RoboRallyServerListener() {
super();
}
@Override
public void received (Connection connection, Object object) {
if (object instanceof SomeRequest) {
SomeRequest request = (SomeRequest)object;
System.out.println(request.text);
SomeResponse response = new SomeResponse();
response.text = "Thanks";
connection.sendTCP(response);
}
}
@Override
public void connected(Connection connection) {
//The first client to connect is assumed to be the host
if (host == null) {
host = connection;
}
System.out.println(connection.getRemoteAddressTCP() + " connected");
}
@Override
public void disconnected(Connection connection) {
System.out.println(connection.getRemoteAddressTCP() + " disconnected");
}
}

View File

@ -0,0 +1,8 @@
package inf112.fiasko.roborally.networking;
/**
* Represents a request to the server
*/
public class SomeRequest {
public String text;
}

View File

@ -0,0 +1,8 @@
package inf112.fiasko.roborally.networking;
/**
* Represents a response from a client
*/
public class SomeResponse {
public String text;
}

View File

@ -0,0 +1,17 @@
package inf112.fiasko.roborally.utility;
import com.esotericsoftware.kryo.Kryo;
import inf112.fiasko.roborally.networking.SomeRequest;
import inf112.fiasko.roborally.networking.SomeResponse;
public final class NetworkUtil {
/**
* Registers all classes which can be sent between a server and a client
* @param kryo The kryo object to register the classes to
*/
public static void registerClasses(Kryo kryo) {
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);
}
}