CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Java and JSP (http://www.codingforums.com/forumdisplay.php?f=54)
-   -   Chat Server Crashing - cant find error! (http://www.codingforums.com/showthread.php?t=261116)

Lex 05-12-2012 09:57 PM

Chat Server Crashing - cant find error!
 
Dear Forum,

With the help of a tutorial, I created the following code:

Code:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;


public class ServerMain {
        ArrayList clientOutputStreams;         
        ArrayList<String> onlineUsers = new ArrayList();

        public class ClientHandler implements Runnable        {
                BufferedReader reader;
                Socket sock;
                PrintWriter client;
               

                public ClientHandler(Socket clientSocket, PrintWriter user) {
                // new inputStreamReader and then add it to a BufferedReader
                        client = user;
                        try {
                                sock = clientSocket;
                                InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
                                reader = new BufferedReader(isReader);
                        } // end try
                        catch (Exception ex) {
                                System.out.println("error beginning StreamReader");
                        } // end catch

                } // end ClientHandler()
               

        @Override
                public void run() {
                        String message;
                        String[] data;
                        String connect = "Connect";
                        String disconnect = "Disconnect";
                        String chat = "Chat";
                        System.out.println("running");

                        try {
                                while ((message = reader.readLine()) != null) {

                                        System.out.println("Received: " + message);
                                        data = message.split("¥");
                                        for (String token:data) {
                                           
                                        System.out.println(token);
                                       
                                        }
                                       
                                        if (data[2].equals(connect)) {

                                                tellEveryone((data[0] + "¥" + data[1] + "¥" + chat));
                                                userAdd(data[0]);

                                        } else if (data[2].equals(disconnect)) {

                                            tellEveryone((data[0] + "¥has disconnected." + "¥" + chat));
                                            userRemove(data[0]);

                                        } else if (data[2].equals(chat)) {

                                            tellEveryone(message);

                                        } else {
                                            System.out.println("No Conditions were met.");
                                        }


                            } // end while
                        } // end try
                        catch (Exception ex) {
                                System.out.println("lost a connection");
                                clientOutputStreams.remove(client);
                        } // end catch
                } // end run()
        } // end class ClientHandler

        public static void main (String[] args) {
                new ServerMain().go();
        }

        public void go() {
                clientOutputStreams = new ArrayList();

                try {
                        ServerSocket serverSock = new ServerSocket(5000);

                        while (true) {
                                // set up the server writer function and then begin at the same
                                  // the listener using the Runnable and Thread
                            //<editor-fold defaultstate="collapsed" desc="comment">
                            Socket
                                    //</editor-fold>
 clientSock = serverSock.accept();
                                PrintWriter writer = new PrintWriter(clientSock.getOutputStream());
                                clientOutputStreams.add(writer);

                                // use a Runnable to start a 'second main method that will run
                                // the listener
                                Thread listener = new Thread(new ClientHandler(clientSock, writer));
                                listener.start();
                                System.out.println("got a connection");
                        } // end while
                } // end try
                catch (Exception ex)
                {
                        System.out.println("error making a connection");
                } // end catch

        } // end go()


        public void userAdd (String data) {
                String message;
                String add = "¥ ¥Connect", done = "Server¥ ¥Done";
                onlineUsers.add(data);
                String[] tempList = new String[(onlineUsers.size())];
                onlineUsers.toArray(tempList);
               
                for (String token:tempList) {
                   
                    message = (token + add);
                    tellEveryone(message);
                }
                tellEveryone(done);
        }

        public void userRemove (String data) {
                String message;
                String add = "¥ ¥Connect", done = "Server¥ ¥Done";
                onlineUsers.remove(data);
                String[] tempList = new String[(onlineUsers.size())];
                onlineUsers.toArray(tempList);

                for (String token:tempList) {

                    message = (token + add);
                    tellEveryone(message);
                }
                tellEveryone(done);
        }

        public void tellEveryone(String message) {
        // sends message to everyone connected to server
                Iterator it = clientOutputStreams.iterator();

                while (it.hasNext()) {
                        try {
                                PrintWriter writer = (PrintWriter) it.next();
                                writer.println(message);
                                System.out.println("Sending" + message);
                                writer.flush();
                        } // end try
                        catch (Exception ex) {
                                System.out.println("error telling everyone");
                        } // end catch
                } // end while
        } // end tellEveryone()
} // end class Server

It compiles, but ends as soon as it runs with the error mesage:
error making a connection
BUILD SUCCESSFUL (total time: 0 seconds)

The debugger states:
ave no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar
Have no file for /System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar
Have no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar
Have no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar

This has been coded with NetBeans in Mac OS X 10.7.3

Thanks

Lexo


All times are GMT +1. The time now is 11:05 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.