Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package se.dalsit.net;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.Iterator;
- import se.dalsit.net.Packet.NewConnection;
- public class Server {
- private final static String SERVERSTRING = "[SERVER]: ";
- private ServerSocket server;
- private ArrayList<ObjectOutputStream> connectionsList = new ArrayList<ObjectOutputStream>();
- private ArrayList<Player> playersList = new ArrayList<Player>();
- public static void main(String[] args) {
- new Server();
- }
- public Server() {
- startNetworking();
- }
- private void startNetworking() {
- try {
- server = new ServerSocket(4242);
- System.out.println(SERVERSTRING + "Server started at port 4242");
- while (true) {
- //Accepts the incoming connection!
- Socket clientSocket = server.accept();
- //Creates a objectWriter and adds it to the objectWriterList
- ObjectOutputStream objectWriter = new ObjectOutputStream (clientSocket.getOutputStream());
- ObjectInputStream reader = new ObjectInputStream (clientSocket.getInputStream());
- connectionsList.add(objectWriter);
- // Logger
- System.out.println(SERVERSTRING + "Got a connection from: "
- + clientSocket.getInetAddress());
- System.out.println(SERVERSTRING + "Creating player");
- //Creates the player and sents it to the CLient
- createPlayer(objectWriter);
- // Logger
- System.out.println(SERVERSTRING + "Player sent");
- // sends the arrayList of players to the connecting client!
- objectWriter.writeObject(playersList);
- // Logger
- System.out.println(SERVERSTRING + "List sent!");
- //Sends the arraylist to all the connected clients!
- Thread t = new Thread (new ClientHandler(connectionsList.size(),reader),"Client" + connectionsList.size());
- t.start();
- }
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void sendToAll() {
- Iterator<ObjectOutputStream> it = connectionsList.iterator();
- while (it.hasNext()) {
- try {
- ObjectOutputStream writer =it.next();
- writer.writeObject(this.playersList);
- System.out.println(SERVERSTRING +"SEND TO ALL CLIENTS SIZE: " + this.playersList.size());
- }catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
- private void createPlayer(ObjectOutputStream currentConnection) {
- Player p = new Player(connectionsList.size());
- playersList.add(p);
- try {
- currentConnection.writeObject(p);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private class ClientHandler implements Runnable {
- int id;
- ObjectInputStream reader;
- Object o;
- private ClientHandler (int id,ObjectInputStream reader) {
- this.reader = reader;
- this.id = id;
- }
- public void run () {
- try {
- while ((o = reader.readObject()) != null) {
- if (o instanceof Packet.NewConnection) {
- System.out.println("New Connection!");
- sendToAll();
- }
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement