主要的功能服务器端和客户端,服务器一开,客户端之间就可以相互通信,
知道大体的思路,客户端的界面已经写好,大家帮帮我
客户端的界面
import java.awt.event.*;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args) {
JFrame frame=new JFrame("Chat Client");
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JTextArea jta=new JTextArea();
final JTextField jtf=new JTextField();
frame.add(new JScrollPane(jta));
frame.add(jtf,"South");

jta.setEditable(false);

frame.setVisible(true);

jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
String text=jtf.getText();
jtf.setText("");
jta.append(text+"\n");
}
});
}
}

解决方案 »

  1.   

    这个程序有点小问题,测试了就知道了
    //客户端
    package chat;import java.awt.event.*;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;import javax.swing.*;public class ChatClient {
    public static void main(String[] args) {
    JFrame frame = new JFrame("Chat Client");
    frame.setSize(400, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JTextArea jta = new JTextArea();
    final JTextField jtf = new JTextField();
    frame.add(new JScrollPane(jta));
    frame.add(jtf, "South"); jta.setEditable(false); frame.setVisible(true); class ClientThread extends Thread {
    public void run() {
    Socket s = null;
    try {
    s = new Socket("127.0.0.1", 9000); InputStream is = s.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr); while (true) {
    String str = br.readLine();
    jta.append(str + "\n");
    }
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (s != null)
    try {
    s.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    } Thread t = new ClientThread();
    t.start(); class WriterClient extends Thread {
    public void run() {
    Socket s = null;
    try {
    s = new Socket("127.0.0.1", 9000); OutputStream os = s.getOutputStream();
    PrintWriter pw = new PrintWriter(os); pw.println(jtf.getText()); pw.flush();
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (s != null)
    try {
    s.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    } jtf.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    Thread t1 = new WriterClient();
    t1.start();
    }
    }); }
    }//服务器
    package chat;import java.net.*;
    import java.io.*;
    import java.util.*;public class Sever {
    static List list = new ArrayList();  public static List getList() {
    return list;
    } public static void main(String[] args) {
    try {
    ServerSocket ss = new ServerSocket(9000);
    while (true) {
    Socket s = ss.accept();
    list.add(s);
    Thread t = new WriterThreadServer(s);
    t.start();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }/*
     class ReaderServerThread extends Thread{
     Socket s;
     
     public ReaderServerThread(Socket s){
     this.s = s;
     }
     
     public void run(){
     try {
     InputStream is = s.getInputStream();
     InputStreamReader isr = new InputStreamReader(is);
     BufferedReader br = new BufferedReader(isr);
     
     OutputStream os = s.getOutputStream();
     PrintWriter pw = new PrintWriter(os);
     while(true){
     String str = br.readLine();
     
     pw.println(str);
     
     pw.flush();
     }
     } catch (IOException e) {
     e.printStackTrace();
     }
     }
     }
     */
    class WriterThreadServer extends Thread {
    Socket ws; List list; public WriterThreadServer(Socket ws) {
    this.ws = ws;
    } public void run() {
    list = Sever.getList(); try {
    InputStream is = ws.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr); String str = br.readLine(); Iterator it = list.iterator(); while (it.hasNext()) {
    Object o = it.next();
    Socket s = (Socket) o; OutputStream os = s.getOutputStream();
    PrintWriter pw = new PrintWriter(os); pw.println(str);
    pw.flush();
    }
    } catch (IOException e) {
    } finally {
    Iterator it = list.iterator(); while (it.hasNext()) {
    Object o = it.next();
    Socket s = (Socket) o;
    try {
    s.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }