Fixed server discovery

This commit is contained in:
Anuken
2018-01-19 19:11:14 -05:00
parent b1a38c3e61
commit 49aef2bf99
5 changed files with 48 additions and 66 deletions

View File

@@ -5,9 +5,7 @@ import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.ObjectSet;
import com.esotericsoftware.kryonet.*;
import com.esotericsoftware.kryonet.FrameworkMessage.DiscoverHost;
import com.esotericsoftware.kryonet.Listener.LagListener;
import com.esotericsoftware.kryonet.serialization.Serialization;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.net.Host;
import io.anuke.mindustry.net.Net;
@@ -147,16 +145,8 @@ public class KryoClient implements ClientProvider{
public void pingHost(String address, int port, Consumer<Host> valid, Consumer<IOException> invalid){
Thread thread = new Thread(() -> {
try {
Serialization ser = (Serialization) UCore.getPrivate(client, "serialization");
DatagramSocket socket = new DatagramSocket();
ByteBuffer dataBuffer = ByteBuffer.allocate(64);
ser.write(dataBuffer, new DiscoverHost());
dataBuffer.flip();
byte[] data = new byte[dataBuffer.limit()];
dataBuffer.get(data);
socket.send(new DatagramPacket(data, data.length, InetAddress.getByName(address), port));
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), Vars.port));
socket.setSoTimeout(2000);
@@ -166,9 +156,8 @@ public class KryoClient implements ClientProvider{
socket.receive(packet);
handler.onDiscoveredHost(packet);
Host host = addresses.values().next();
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
Host host = KryoRegistrator.readServerData(packet.getAddress(), buffer);
if (host != null) {
Gdx.app.postRunnable(() -> valid.accept(host));

View File

@@ -67,7 +67,7 @@ public class KryoServer implements ServerProvider {
c.addressTCP = connection.getRemoteAddressTCP().toString();
connections.add(kn);
Gdx.app.postRunnable(() -> Net.handleServerReceived(c, kn.id));
Gdx.app.postRunnable(() -> Net.handleServerReceived(kn.id, c));
}
@Override
@@ -79,7 +79,7 @@ public class KryoServer implements ServerProvider {
Disconnect c = new Disconnect();
c.id = k.id;
Gdx.app.postRunnable(() -> Net.handleServerReceived(c, c.id));
Gdx.app.postRunnable(() -> Net.handleServerReceived(k.id, c));
}
@Override
@@ -89,7 +89,7 @@ public class KryoServer implements ServerProvider {
Gdx.app.postRunnable(() -> {
try{
Net.handleServerReceived(object, k.id);
Net.handleServerReceived(k.id, object);
}catch (Exception e){
e.printStackTrace();
}
@@ -377,7 +377,7 @@ public class KryoServer implements ServerProvider {
if(k == null) return;
Disconnect disconnect = new Disconnect();
disconnect.id = k.id;
Net.handleServerReceived(disconnect, k.id);
Net.handleServerReceived(k.id, disconnect);
}
@Override
@@ -396,7 +396,7 @@ public class KryoServer implements ServerProvider {
if (debug) UCore.log("Decoded: " + Arrays.toString(out));
ByteBuffer buffer = ByteBuffer.wrap(out);
Object o = serializer.read(buffer);
Net.handleServerReceived(o, k.id);
Net.handleServerReceived(k.id, o);
}
}catch (Exception e){
UCore.log("Error reading message!");