只要求两个文本框在同一个面板上,类似QQ那样,都能接受对方发的信息(服务器与客户机) 

解决方案 »

  1.   

    这个首先涉及到Socket编程,还有GUI图形用户界面,如果是简单应用的话,这方面的例子网上也有,可以下载参考一下
      

  2.   

    SocketChannel和ServerSocketChannel - 3-
      

  3.   

    这个最好用UDP 相对的 服务器与客户端 以前就用UDP实现的 楼主可以试试看!
      

  4.   

    看一下socket ,和swing 方面的资料 就可以做出来了要求高的话再看看nio一块..
      

  5.   

    http://blog.csdn.net/bzwm/archive/2008/11/24/3361147.aspxqu kankan 
      

  6.   

    http://www.lifeispig.cn/article.asp?id=103 这里有一个楼主看一下吧,,,
      

  7.   


    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;public class ChatRoomClient implements ActionListener{
    private JFrame jf;
    private JTextArea area;
    private JTextField field;
    private JLabel label;
    private JButton button;
    private String userName;
    private Socket s;
    private BufferedReader br;
    private PrintWriter pw;

    public ChatRoomClient(){

    createSocket();

    jf=new JFrame("聊天室客户端v1.0");
    area=new JTextArea(20,40);
    field=new JTextField(25);
    button=new JButton("发送");
    label=new JLabel(userName);

    JScrollPane jsp=new JScrollPane(area);
    jf.add(jsp,BorderLayout.CENTER);

    JPanel panel=new JPanel();
    panel.add(label);
    panel.add(field);
    panel.add(button);

    jf.add(panel,BorderLayout.SOUTH);

    addEventHandler();
    }

    public void createSocket(){
    do {
    String hostName = JOptionPane.showInputDialog(jf,
    "请输入服务器主机名:");
    String portName = JOptionPane
    .showInputDialog(jf, "请输入端口号:");
    try {
    s = new Socket(hostName, Integer.parseInt(portName));
    br=new BufferedReader(new InputStreamReader(s.getInputStream()));
    pw=new PrintWriter(s.getOutputStream());
    } catch (Exception e) {
    JOptionPane.showMessageDialog(jf, "无法建立到服务器的连接,请重新输入!");
    }
    } while (s==null);

    userName=JOptionPane.showInputDialog(jf,"请输入用户名:");
    }

    public void actionPerformed(ActionEvent arg0) {
    String str=field.getText().trim();
    if(str.equals("")){
    JOptionPane.showMessageDialog(jf, "不能发送空消息!");
    return;
    }
    pw.println(str);
    pw.flush();
    field.setText("");
    } public void addEventHandler(){
    button.addActionListener(this);

    jf.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent arg0) {
    int op=JOptionPane.showConfirmDialog(jf,"确认退出聊天室吗?","确认退出",JOptionPane.YES_NO_OPTION);
    if(op==JOptionPane.YES_OPTION){
    pw.println("%EXIT%:"+userName);
    pw.flush();

    try {
    Thread.sleep(200);
    s.close();
    } catch (Exception e) {

    }

    System.exit(0);
    }
    }
    });
    }

    public void showMe(){
    jf.pack();
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    new ReadMessageThread().start();
    }

    class ReadMessageThread extends Thread{
    public void run(){
    while(true){
    try {
    String str=br.readLine();
    area.append(str+"\n");
    } catch (IOException e) {

    }
    }
    }
    } public static void main(String[] args) {
    new ChatRoomClient().showMe();
    }}
      

  8.   


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.HashSet;public class ChatRoomServer {
    private ServerSocket ss;
    private HashSet<Socket> allSockets;//存放所有客户端的链接


    public  ChatRoomServer(){
    try {
    ss=new ServerSocket(9999);
    allSockets=new HashSet<Socket>();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    public void startService() throws IOException{
    while(true){
    Socket s=ss.accept();
    allSockets.add(s);
    new ChatRoomServerThread(s).start();
    }
    }

    class ChatRoomServerThread extends Thread{
    private Socket s;

    public ChatRoomServerThread(Socket s){
    this.s=s;
    }

    public void run(){
    try {
    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    while(true){
    String data = br.readLine();
    if(data.indexOf("%EXIT%") >= 0){
    allSockets.remove(s);
    //br.close();
    s.close();
    break;
    }
    for(Socket e:allSockets){
    System.out.println(e.getInetAddress());
    PrintWriter pw = new PrintWriter(e.getOutputStream());
    pw.println(data);
    pw.flush();
    }
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } public static void main(String[] args) {
    try {
    new ChatRoomServer().startService();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }