最好是用GUI做的,,,,有哪位大哥知道的,小弟把分都给他!!!

解决方案 »

  1.   

    http://acman.blog.hexun.com/6829175_d.html,来这瞧一瞧
      

  2.   

    -----ChatClient.java-----
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class ChatClient {

    JTextArea txtIncome; //收信显示
    JTextField txtOutgoing; //发信文本框

    BufferedReader reader; //流文件操作
    PrintWriter writer;

    Socket sock;

    public void buildGui() {

    JFrame frame = new JFrame("TrackSpider Chat Client");
    JPanel mainPanel = new JPanel();
    txtIncome = new JTextArea(15, 30);
    txtIncome.setLineWrap(true);
    txtIncome.setWrapStyleWord(true);
    txtIncome.setEditable(false);

    //为txtIncome放置滚动条
    JScrollPane qScroller = new JScrollPane(txtIncome);
    qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

    txtOutgoing = new JTextField(20);

    JButton btnSend = new JButton("Send");
    btnSend.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent ev) {
    try {
    writer.println(txtOutgoing.getText());
    writer.flush();
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    txtOutgoing.setText("");
    txtOutgoing.requestFocus();
    }
    });

    mainPanel.add(qScroller);
    mainPanel.add(txtOutgoing);
    mainPanel.add(btnSend);

    setUpNetworking();

    Thread readerThread = new Thread(new IncomingReader());
    readerThread.start();

    frame.getContentPane().add(mainPanel, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 420);
    frame.setVisible(true);
    }

    private void setUpNetworking() {

    try {
    sock = new Socket("127.0.0.1", 5000);
    InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
    reader = new BufferedReader(streamReader);
    writer = new PrintWriter(sock.getOutputStream());
    System.out.println("networking established");
    } catch(IOException ex) {
    ex.printStackTrace();
    }
    }

    private class IncomingReader implements Runnable {

    public void run() {
    String message;
    try {
    while ((message = reader.readLine()) != null) {
    System.out.println("read " + message);
    txtIncome.append(message + "\n");
    }
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    }
    }

    public static void main(String[] args) {
    new ChatClient().buildGui();
    }
    }-----ChatServer.java-------
    import java.io.*;
    import java.net.*;
    import java.util.*;public class ChatServer {

    ArrayList clientOutputStreams;

    private class ClientHandler implements Runnable {

    BufferedReader reader;
    Socket sock;

    public ClientHandler(Socket clientSocket) {
    try {
    sock = clientSocket;
    InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
    reader = new BufferedReader(isReader);
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    }

    public void run() {
    String message;
    try {
    while ((message = reader.readLine()) != null) {
    System.out.println("read " + message);
    tellEveryOne(message);
    }
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }

    public void go() {
    clientOutputStreams = new ArrayList();
    try {
    ServerSocket serverSocket = new ServerSocket(5000);

    while(true) {
    Socket clientSocket = serverSocket.accept();
    PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
    this.clientOutputStreams.add(writer);

    Thread t = new Thread(new ClientHandler(clientSocket));
    t.start();
    }
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    }

    private void tellEveryOne(String message) {

    Iterator it = clientOutputStreams.iterator();
    while(it.hasNext()) {
    try {
    PrintWriter writer = (PrintWriter) it.next();
    writer.println(message);
    writer.flush();
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    }
    }

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

  3.   

    笔者有个多线程的聊天室!
    e-mail:[email protected]