Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
8916d7f8b9
BIN
java_pid21340.hprof
Normal file
BIN
java_pid21340.hprof
Normal file
Binary file not shown.
@ -5,62 +5,64 @@ import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
|
||||
/**
|
||||
* Sends a ping to the server ("CPING") every 2 seconds and checks if it has gotten a pingback.
|
||||
* The actual logging of the pingback (via the gotPingBack boolean) has to be done elsewhere,
|
||||
* depends on how the client receives and parses messages.
|
||||
* Sends a ping to the server ("CPING") every 2 seconds and checks if it has gotten a pingback. The
|
||||
* actual logging of the pingback (via the gotPingBack boolean) has to be done elsewhere, depends on
|
||||
* how the client receives and parses messages.
|
||||
*/
|
||||
public class ClientPinger implements Runnable{
|
||||
private boolean gotPingBack; //should be set to true (via setGotPingBack) as soon as the client gets a pingback.
|
||||
private boolean isConnected; //set to true unless the ClientPinger detects a connection loss.
|
||||
BufferedWriter out; //the output of this client through which the pings are sent
|
||||
private Socket socket;
|
||||
public class ClientPinger implements Runnable {
|
||||
|
||||
/**
|
||||
* @param socket the socket the Client is connected to which is used to end the thread if the connection is lost.
|
||||
* @param out the output through which the pings are sent.
|
||||
*/
|
||||
public ClientPinger(BufferedWriter out, Socket socket) {
|
||||
private boolean gotPingBack; //should be set to true when client gets a pingback.
|
||||
private boolean isConnected; //set to true unless the ClientPinger detects a connection loss.
|
||||
BufferedWriter out; //the output of this client through which the pings are sent
|
||||
private Socket socket;
|
||||
|
||||
/**
|
||||
* @param socket the socket the Client is connected to which is used to end the thread if the
|
||||
* connection is lost.
|
||||
* @param out the output through which the pings are sent.
|
||||
*/
|
||||
public ClientPinger(BufferedWriter out, Socket socket) {
|
||||
gotPingBack = false;
|
||||
isConnected = true;
|
||||
this.out = out;
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (socket.isConnected()) {
|
||||
gotPingBack = false;
|
||||
isConnected = true;
|
||||
this.out = out;
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (socket.isConnected()) {
|
||||
gotPingBack = false;
|
||||
out.write("CPING");
|
||||
out.newLine();
|
||||
out.flush();
|
||||
Thread.sleep(2000);
|
||||
if (gotPingBack) {
|
||||
if (!isConnected) { //if !isConnected, then the connection had been lost before.
|
||||
isConnected = true;
|
||||
System.out.println("Connection regained!");
|
||||
}
|
||||
} else {
|
||||
isConnected = false;
|
||||
System.out.println("Lost connection. Waiting to reconnect...");
|
||||
}
|
||||
|
||||
}
|
||||
isConnected = false; //in case the socket accidentally disconnects (can this happen?)
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
out.write("CPING");
|
||||
out.newLine();
|
||||
out.flush();
|
||||
Thread.sleep(2000);
|
||||
if (gotPingBack) {
|
||||
if (!isConnected) { //if !isConnected, then the connection had been lost before.
|
||||
isConnected = true;
|
||||
System.out.println("Connection regained!");
|
||||
}
|
||||
} else {
|
||||
isConnected = false;
|
||||
System.out.println("Lost connection. Waiting to reconnect...");
|
||||
}
|
||||
}
|
||||
|
||||
public void setGotPingBack(boolean gotPingBack) {
|
||||
this.gotPingBack = gotPingBack;
|
||||
}
|
||||
isConnected = false; //in case the socket accidentally disconnects (can this happen?)
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isConnected() {
|
||||
return isConnected;
|
||||
}
|
||||
public void setGotPingBack(boolean gotPingBack) {
|
||||
this.gotPingBack = gotPingBack;
|
||||
}
|
||||
|
||||
public boolean isConnected() {
|
||||
return isConnected;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -5,61 +5,63 @@ import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
|
||||
/**
|
||||
* Sends a ping to the client ("SPING") every 2 seconds and checks if it has gotten a pingback.
|
||||
* The actual logging of the pingback (via the gotPingBack boolean) has to be done elsewhere,
|
||||
* depends on how the server receives and parses messages.
|
||||
* Sends a ping to the client ("SPING") every 2 seconds and checks if it has gotten a pingback. The
|
||||
* actual logging of the pingback (via the gotPingBack boolean) has to be done elsewhere, depends on
|
||||
* how the server receives and parses messages.
|
||||
*/
|
||||
public class ServerPinger implements Runnable{
|
||||
private boolean gotPingBack; //should be set to true (via setGotPingBack) as soon as the server gets a pingback.
|
||||
private boolean isConnected; //set to true unless the ServerPinger detects a connection loss.
|
||||
BufferedWriter out; //the output of this client through which the pings are sent
|
||||
private Socket socket;
|
||||
public class ServerPinger implements Runnable {
|
||||
|
||||
/**
|
||||
* @param socket the socket the ClientHandler is connected to; used to end the thread if the connection is lost.
|
||||
* @param out the output through which the pings are sent.
|
||||
*/
|
||||
public ServerPinger(BufferedWriter out, Socket socket) {
|
||||
private boolean gotPingBack; //should be set to true (via setGotPingBack) as soon as the server gets a pingback.
|
||||
private boolean isConnected; //set to true unless the ServerPinger detects a connection loss.
|
||||
BufferedWriter out; //the output of this client through which the pings are sent
|
||||
private Socket socket;
|
||||
|
||||
/**
|
||||
* @param socket the socket the ClientHandler is connected to; used to end the thread if the
|
||||
* connection is lost.
|
||||
* @param out the output through which the pings are sent.
|
||||
*/
|
||||
public ServerPinger(BufferedWriter out, Socket socket) {
|
||||
gotPingBack = false;
|
||||
isConnected = true;
|
||||
this.out = out;
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (socket.isConnected()) {
|
||||
gotPingBack = false;
|
||||
isConnected = true;
|
||||
this.out = out;
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (socket.isConnected()) {
|
||||
gotPingBack = false;
|
||||
out.write("SPING");
|
||||
out.newLine();
|
||||
out.flush();
|
||||
Thread.sleep(2000);
|
||||
if (gotPingBack) {
|
||||
if (!isConnected) { //if !isConnected, then the connection had been lost before.
|
||||
isConnected = true;
|
||||
System.out.println("Connection regained!");
|
||||
}
|
||||
} else {
|
||||
isConnected = false;
|
||||
System.out.println("Lost connection. Waiting to reconnect...");
|
||||
}
|
||||
}
|
||||
isConnected = false; //in case the socket accidentally disconnects (can this happen?)
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
out.write("SPING");
|
||||
out.newLine();
|
||||
out.flush();
|
||||
Thread.sleep(2000);
|
||||
if (gotPingBack) {
|
||||
if (!isConnected) { //if !isConnected, then the connection had been lost before.
|
||||
isConnected = true;
|
||||
System.out.println("Connection regained!");
|
||||
}
|
||||
} else {
|
||||
isConnected = false;
|
||||
System.out.println("Lost connection. Waiting to reconnect...");
|
||||
}
|
||||
}
|
||||
isConnected = false; //in case the socket accidentally disconnects (can this happen?)
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void setGotPingBack(boolean gotPingBack) {
|
||||
this.gotPingBack = gotPingBack;
|
||||
}
|
||||
public void setGotPingBack(boolean gotPingBack) {
|
||||
this.gotPingBack = gotPingBack;
|
||||
}
|
||||
|
||||
public boolean isConnected() {
|
||||
return isConnected;
|
||||
}
|
||||
public boolean isConnected() {
|
||||
return isConnected;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -7,14 +7,14 @@
|
||||
* LEAVG: leave a game
|
||||
* JOING: join a game
|
||||
* VOTEG: ghost voting who to infect
|
||||
* VOTEH: humans voting whos the ghost
|
||||
* QUITS: quit server/ leave servr
|
||||
* VOTEH: humans voting who is the ghost
|
||||
* QUITS: quit server/ leave server
|
||||
* LISTP: list players/clients in session with the Server
|
||||
* CPING: Ping from client to server.
|
||||
*/
|
||||
/**
|
||||
Server Commands:
|
||||
* MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command.
|
||||
* MSGRS: "Message received": Paramaters: a string detailing to the client that and what the server received as command.
|
||||
* SEROR: Server had an error. (used for debugging)
|
||||
* SPING: Ping from server to client;
|
||||
*/
|
||||
@ -8,54 +8,54 @@ import java.util.Scanner;
|
||||
|
||||
public class Server {
|
||||
|
||||
private static final int gamePort = 42069;
|
||||
private HashSet<ClientHandler> connectedClients = new HashSet<>();
|
||||
private ServerSocket serverSocket;
|
||||
Scanner sc = new Scanner(System.in);
|
||||
private static final int gamePort = 42069;
|
||||
private HashSet<ClientHandler> connectedClients = new HashSet<>();
|
||||
private ServerSocket serverSocket;
|
||||
Scanner sc = new Scanner(System.in);
|
||||
|
||||
public Server(ServerSocket serverSocket) {
|
||||
this.serverSocket = serverSocket;
|
||||
}
|
||||
|
||||
public void startServer() {
|
||||
try {
|
||||
System.out.println("Port 42069 is open on " + this.serverSocket.getInetAddress());
|
||||
while (!serverSocket.isClosed()) {
|
||||
Socket socket = serverSocket.accept();
|
||||
ClientHandler nextClient = new ClientHandler(socket);
|
||||
Thread th = new Thread(nextClient);
|
||||
connectedClients.add(nextClient);
|
||||
th.start();
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
public Server(ServerSocket serverSocket) {
|
||||
this.serverSocket = serverSocket;
|
||||
}
|
||||
}
|
||||
|
||||
public void startServer() {
|
||||
try {
|
||||
System.out.println("Port 42069 is open on " + this.serverSocket.getInetAddress());
|
||||
while (!serverSocket.isClosed()) {
|
||||
Socket socket = serverSocket.accept();
|
||||
ClientHandler nextClient = new ClientHandler(socket);
|
||||
Thread th = new Thread(nextClient);
|
||||
connectedClients.add(nextClient);
|
||||
th.start();
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
public void closeServerSocket() {
|
||||
try {
|
||||
if (serverSocket != null) {
|
||||
serverSocket.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void closeServerSocket() {
|
||||
try {
|
||||
if (serverSocket != null){
|
||||
serverSocket.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
ServerSocket serverSocket = null;
|
||||
try {
|
||||
serverSocket = new ServerSocket(gamePort);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Server server = new Server(serverSocket);
|
||||
server.startServer();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ServerSocket serverSocket = null;
|
||||
try {
|
||||
serverSocket = new ServerSocket(gamePort);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Server server = new Server(serverSocket);
|
||||
server.startServer();
|
||||
}
|
||||
|
||||
public static void broadcast(String msg){
|
||||
//TODO
|
||||
}
|
||||
public static void broadcast(String msg) {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user