package vn.edu.rmit.sadi;
import javax.swing.*;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends JFrame implements Runnable{
public static void main(String[] args) {
try {
Server server = new Server();
server.setTitle("TicTacToe Server");
server.setVisible(true);
server.setSize(600, 400);
server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
new Thread(server).start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
try {
final JTextArea area = new JTextArea();
area.setEditable(false);
add(new JScrollPane(area));
ServerSocket server = new ServerSocket(9999);
while (true) {
area.append("Waiting to set up a new session...\n");
GameHandler handler = new GameHandler();
for (int i = 0; i < 2; i++) {
Socket socket = server.accept();
area.append("Player " + i + " connected...\n");
Communicator communicator = new Communicator(socket,
new ObjectInputStream(socket.getInputStream()),
new ObjectOutputStream(socket.getOutputStream()));
communicator.write(i == 0 ?
Player.Player1 : Player.Player2);
handler.add(communicator);
}
new Thread(handler).start();
}
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}