Java聊天客户端和服务器

Java聊天客户端和服务器,java,Java,我已经编写了一个与telnet一起工作的聊天服务器。我编写了一个客户端来连接到服务器。在终端中,我通过给客户端文件名、ip地址和端口来运行客户端。它似乎已连接,因为它关闭了服务器,并发生以下错误: Connection reset Exception in thread "main" java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStre

我已经编写了一个与telnet一起工作的聊天服务器。我编写了一个客户端来连接到服务器。在终端中,我通过给客户端文件名、ip地址和端口来运行客户端。它似乎已连接,因为它关闭了服务器,并发生以下错误:

  Connection reset
    Exception in thread "main" java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:130)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:282)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:324)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:176)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.fill(BufferedReader.java:153)
        at java.io.BufferedReader.readLine(BufferedReader.java:316)
        at java.io.BufferedReader.readLine(BufferedReader.java:379)
        at ChatServer$HandleClient.<init>(ChatServer.java:47)
        at ChatServer.process(ChatServer.java:18)
        at ChatServer.main(ChatServer.java:23)


将数据发送到服务器后,发送到ChatClient类

Ok。它不再崩溃了,但我明白了:服务器启动了。。。null服务器未向客户端发送输入其名称的提示。
 import java.io.*;
    import java.util.*;
    import java.net.*;
    import static java.lang.System.out;

    public class  ChatServer {
      ArrayList<String> users = new ArrayList<String>();
      ArrayList<String> buffer = new ArrayList<String>();
      ArrayList<HandleClient> clients = new ArrayList<HandleClient>();
      Socket client;

      public void process() throws Exception  {
          ServerSocket server = new ServerSocket(9020,10);
          out.println("Server Started...");
          while( true) {
             client = server.accept();
             HandleClient c = new HandleClient(client);
             clients.add(c);
         }  // end of while
      }
      public static void main(String ... args) throws Exception {
          new ChatServer().process();
      } // end of main

      public void bc(String user, String message)  {
            // send message to all connected users
            for ( HandleClient c : clients )
               if ( ! c.getUserName().equals(user) )
                  c.sendMessage(user,message);
      }

      class  HandleClient extends Thread {
            String name = "";
        BufferedReader input;
        PrintWriter output;

        public HandleClient(Socket  client) throws Exception {
             // get input and output streams
         start();
         input = new BufferedReader( new InputStreamReader( client.getInputStream())) ;
         output = new PrintWriter ( client.getOutputStream(),true);
         output.println("Welcome to Kimberly's Chat room");
         // receives the name of the client
         output.println("Enter your name: ");
         // read name of the client
         name  = input.readLine();
         users.add(name); // adds the name of the client to the vector
         output.println("Thanks for joining " + name + ". If you need help, type \"help\" for a list of commands.");
         //start();
            }

            public void sendMessage(String uname,String  msg)  {
            output.println(uname + ":" + msg);
        }

            public String getUserName() {
                return name;
            }

        public String toString() {
                return name;
            }

            public void run()  {
                 String line;
             try    {
                   while(true)   {
                line = input.readLine();
                String[] temp;
                temp = line.split(":");
                    //checks different input from the client
                //checks to see if the client wants to terminate their connection
                //removes the client's name from the list
                if ("adios".equals(line)){
                    output.println("Server closing connection...");
                    clients.remove(this);
                    users.remove(name);
                    break;
                        }
                //checks to see if the client typed in help to receive a list of the commands
                else if("help".equals(line)){
                    output.println("Here is a list of user commands:");
                    output.println("adios: exit");
                    output.println("help: lists the commands and their syntax");
                    output.println("get: receives a response of the entire chat buffer");
                    output.println("name: receives a response of \"OK\" and adds the name to a list");
                }
                else if("getNames".equals(line)){
                    output.println(users.toString());
                }
                else if("name".equals(temp[0])){
                    users.add(temp[1]);
                    output.println("OK");
                }
                else if("push".equals(temp[0])){
                    buffer.add(name + ":" + temp[1]);
                    output.println("OK");
                }
                else if("get".equals(line)){
                    output.println(buffer.toString());
                }
                else if("test".equals(temp[0])){
                    output.println(temp[1].toString());
                }
                else{
                    bc(name,line); // method  of outer class - send messages to all
                }
               } // end of while
             } // try
             catch(Exception e) {
               System.out.println(e.getMessage());
             }
             try{
            client.close();
             }
             catch(Exception e) {
               System.out.println(e.getMessage());
             }
            } // end of run()
       } // end of inner class
}
public class  ChatClient {
    PrintWriter output;
    BufferedReader input;
    Socket client;

    public ChatClient(String ip, int port) throws Exception {
    client = new Socket(ip,port);
    input = new BufferedReader( new InputStreamReader( client.getInputStream()) ) ;
        output = new PrintWriter(client.getOutputStream(),true);

    }

    public static void main(String args[]) {
        try {
        String ip= args[0];
        int port= Integer.parseInt(args[1]);
            new ChatClient(ip,port);
        } catch(Exception ex) {
            out.println( "Error --> " + ex.getMessage());
        }

    } // end of main
input.readLine();