import java.net.*; import java.io.*; public class BreakThroughServer implements Serializable { private ServerSocket sSocket; private Socket socket; private int[][] defaultBoard = {{1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}, {1,1,0,0,0,0,2,2}}; private int[][] currentBoard; int playerNumber = 1; public static void main(String[] args) { new BreakThroughServer(); } public BreakThroughServer() { GameThread thread; try { sSocket = new ServerSocket(16789); while(true) { socket = sSocket.accept(); System.out.println("Connection accepted from " + socket.getInetAddress()); if(playerNumber == 1) { thread = new GameThread(playerNumber); playerNumber++; thread.start(); } else if(playerNumber == 2) { thread = new GameThread(playerNumber); playerNumber--; thread.start(); } } } catch(IOException ioe) { System.out.println(ioe.getMessage()); } } protected class GameThread extends Thread { private int playerNumber; private InputStream in; private OutputStream out; private BufferedReader inStream; private PrintWriter outStream; private ObjectOutputStream objectStream; private String fromUser; private String fromServer; public GameThread(int playerNumber) { this.playerNumber = playerNumber; } public void run() { try { //set current board to the default board currentBoard = (int[][])defaultBoard.clone(); //data streams from socket out = socket.getOutputStream(); in = socket.getInputStream(); //wraps data streams for ease of use inStream = new BufferedReader(new InputStreamReader(in)); outStream = new PrintWriter(out, true); //wrapper for object stream objectStream = new ObjectOutputStream(out); //initial communication to client System.out.println("p-" + playerNumber); outStream.println("p-" + playerNumber); outStream.flush(); out.flush(); System.out.println(currentBoard[1][1]); objectStream.writeObject(currentBoard); System.out.println(currentBoard[1][1]); objectStream.flush(); out.flush(); } catch(IOException ioe) { System.out.println(ioe.getMessage()); } } } }