Jump to content

ServerDaemon.java: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
Ak120 (talk | contribs)
m Blanked the page
Line 1: Line 1:
<PRE>
import java.net.*;
import java.io.*;


public class ServerDaemon implements Runnable {
    private Thread      daem;
    private Server      owner;
    private int          port;
    private ServerSocket sock;
    // constructor
    public ServerDaemon(Server s, int p) throws Exception {
        owner = s;
        port  = p;
        sock  = new ServerSocket(port);
        daem  = new Thread(this);
        daem.start();
    }
    // run is called from JVM upon a call to start
    public void run() {
        long upTime = 1000  // milliseconds
                      * 60  // * seconds
                      * 5L;  // * minutes = time in minutes
        int stopLoop = 0; // used to avoid severe errors
        while (stopLoop < 100) {
            // used to see if severe error occurs
            long startTime = System.currentTimeMillis();
            try {
                if (sock == null) { // if error had occurred
                    sock  = new ServerSocket(port);
                }
                while (true) { // listen for connections
                    Socket newCon = sock.accept();
                    // create a socket object for that conn.
                    MyServerSocket s = new MyServerSocket(newCon, owner);
                    s.start();
                    // add the new connection to the vector
                    owner.addMySocket(s);
                }
            } catch (Exception e) {
                e.printStackTrace();
                sock = null;
                if ((System.currentTimeMillis() - startTime)
                    < upTime) {
                    ++stopLoop;
                    try {
                        /* take a nap with. The nap time
                        * will increase up to as worst 99
                        * min's. We hope that the network
                        * error will be gone by that time,
                        * summing up to almost 3.5 days.*/
                        Thread.sleep(60000L // one minute
                                    * stopLoop);
                    } catch (Exception exc) {}
                } else {
                    stopLoop = 0; // erase earlier errors
                }
            } // try/catch ends
        } // while ends
        System.out.println("ERROR in ServerDaemon. Exiting");
        System.exit(0);
    }
}
</PRE>
[[Category:Into Java]]

Revision as of 10:12, 24 May 2020