Jump to content

MyChatSocket.java: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Undo revision 74151 by Ak120 (talk)
 
(4 intermediate revisions by one other user not shown)
Line 37: Line 37:
                     owner.setMessage(e.getMessage());
                     owner.setMessage(e.getMessage());
                     owner.disconnect();
                     owner.disconnect();
                 } else ; // probably a disconnect occured
                 } else ; // probably a disconnect occurred
             }
             }
         }
         }
Line 62: Line 62:
}
}
</PRE>
</PRE>
 
[[Category:Into Java]]
[[Category:Java Articles]]

Latest revision as of 19:16, 13 June 2020

import java.net.*;
import java.io.*;

public class MyChatSocket extends Socket implements Runnable {
    protected ChatApplet     owner;
    protected BufferedReader bis;

    public MyChatSocket(ChatApplet o, String address,
                    int port) throws java.io.IOException {

        super(address, port);

        owner = o;
        bis = new BufferedReader(
                new InputStreamReader(
                    this.getInputStream()));

        new MyTimer(this);

        Thread thread = new Thread(this);
        thread.start();
    }

    public void run() {
        String         line;
        while (owner.isConnected) {
            try {
                bis.readLine(); // skip first line
                while ((line = bis.readLine()) != null) {
                    owner.setMessage(line);
                }
            } catch (IOException e) {
                if (owner.isConnected) {
                    owner.setMessage(
                        "Error in socket's run method.");
                    owner.setMessage(e.getMessage());
                    owner.disconnect();
                } else ; // probably a disconnect occurred
            }
        }
    }

    class MyTimer extends Thread {
        public MyTimer(MyChatSocket s) {
            super(s);
            this.start();
        }

        /* Sends an empty message every 10th minute to
         * stay on-line. Recall that the server throws
         * you out if you are too quiet. */
        public void run() {
            try {
                while (true) {
                    this.sleep(600000L);
                    owner.sendMessage("");
                }
            } catch (Exception e) {}
        }
    }
}