Objekt starten von der main-Methode

MarcelFelder

Mitglied
Hallo zäme, ich habe folgenden Code:
Java:
public class MainServer implements Runnable {

    // Instance variables
    private static MainServer s;
    private ArrayList<PrintWriter> list_clientWriter;
    ServerSocket m_ServerSocket;
    int port = 16001;
    int clients = 0;

    /**
    * Method to initialize the server returns true if server has been
    * initialized ordinarily otherwise returns false
    * 
    * @return returns true if ordinarily intialized otherwise false
    */

    public boolean runServer() {
        try {

            m_ServerSocket = new ServerSocket(port);
            System.out.println("Server erstellt. Port: " + port);
            list_clientWriter = new ArrayList<PrintWriter>();

            return true;

        } catch (IOException e) {
            System.out.println("Server konnte nicht gestartet werden");
            e.printStackTrace();

            returnfalse;

        }
    }

 

    /**
    * Method where Server accepts several clients. For each ClientSocket a new
    * Print Writer will be initialized and set to the PrintWriter ArrayList
    */

    public void listenToClients() {

        while (clients < 2) {

            PrintWriter writer;

            try {
                clients++;

                Socket clientSocket = m_ServerSocket.accept();
                writer = new PrintWriter(clientSocket.getOutputStream());
                list_clientWriter.add(writer);

                System.out.println("Client " + clients + " hinzugef?gt.");

                new Thread(new ServerThreadForClient(clientSocket, clients,
                        s.getServer())).start();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }   



    @Override

    public void run() {
        s = new MainServer();
        if (s.runServer()) {
            s.listenToClients();
            ;
        } else {
            // Do nothing
        }
    }


    //Main method to start the server
    public static void main (String[] args) 

    { 
        //Was muss ich hier schreiben damit der Server startet?        
    }

Da ich ziemlich ein Anfänger bin ist meine Frage: Was muss ich in der main Methode schreiben, damit das Objekt s vom Typ MainServer durch die run-Methode läuft? Das Objekt s möchte ich anschliessen einer neuen Klasse übergeben, welche einen neuen Thread erstellt.
 
Um deine Klasse in der main-Methode aufzurufen musst du einfach nur:

Java:
public static void main(String args[])
{
    mServer = new MainServer();
    mServer.run();
}
schreiben..

Da du nicht von alleine drauf gekommen bist empfehle ich dir, lieber noch mal ein Buch zu OOP zu lesen bevor du mit Netzwerkprogrammierung weiter machst.
( Nur ein gut gemeinter Rat 🙂 )

Da du in deiner main Methode eine Instanze von MainServer erstellst, solltest du das hier noch mal überdenken:
public void run() {
s = new MainServer(); // <------
if (s.runServer()) {
s.listenToClients();
; <-- hat das einen Sinn?
} else {
// Do nothing
}
}

Gruß
Robert
 

Neue Themen


Zurück
Oben