This commit is contained in:
50
app/src/main/java/network/server/ServerReadThread.java
Normal file
50
app/src/main/java/network/server/ServerReadThread.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package network.server;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
import network.protocol.Packet;
|
||||
|
||||
public class ServerReadThread extends Thread {
|
||||
|
||||
private final Server server;
|
||||
|
||||
public ServerReadThread(Server server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
this.server.serverSocket.close();
|
||||
interrupt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (!interrupted()) {
|
||||
byte[] buffer = new byte[1024];
|
||||
DatagramPacket dataPacket = new DatagramPacket(buffer, buffer.length);
|
||||
this.server.serverSocket.receive(dataPacket);
|
||||
|
||||
InetSocketAddress address = new InetSocketAddress(dataPacket.getAddress(), dataPacket.getPort());
|
||||
|
||||
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(dataPacket.getData()));
|
||||
Packet packet = (Packet) ois.readObject();
|
||||
|
||||
if (!this.server.connexions.containsKey(dataPacket.getSocketAddress())) {
|
||||
this.server.connexions.put(address, new ServerConnexion(address, server));
|
||||
}
|
||||
|
||||
this.server.connexions.get(address).visit(packet);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user