当前位置:编程学习 > JAVA >>

java编程_socket_套接字_网络编程_简易的GUI多线程聊天程序

运行效果:

\


服务器端代码:
 
  1 package com.b510.socket1706.gui.freeechatroom;
  2
  3 import java.io.*;
  4 import java.net.*;
  5 import java.awt.*;
  6 import java.awt.event.*;
  7
  8 /**
  9  * 服务器端程序
 10  *
 11  * @author Hongten
 12  *
 13  * @time 2012-4-29 2012
 14  */
 15 public class TestServer {
 16     private ServerSocket ss;
 17     private Socket s;
 18     private DataInputStream dis;
 19     private DataOutputStream dos;
 20     private TextArea ta;
 21     private TextField tf;
 22
 23     public static void main(String args[]) {
 24         TestServer ts = new TestServer();
 25         ts.createUI();
 26         ts.connect();
 27         ts.createThread();
 28     }
 29
 30     public void connect() {
 31         try {
 32             ss = new ServerSocket(8888);
 33             s = ss.accept();
 34             dis = new DataInputStream(s.getInputStream());
 35             dos = new DataOutputStream(s.getOutputStream());
 36         } catch (IOException e) {
 37             e.printStackTrace();
 38             // 13701303436
 39
 40         }
 41     }
 42
 43     public void createUI() {
 44         Frame f = new Frame("Server");
 45         ta = new TextArea();
 46         tf = new TextField();
 47         Button send = new Button("send");
 48         Panel p = new Panel();
 49         p.setLayout(new BorderLayout());
 50         p.add(tf, "Center");
 51         p.add(send, "East");
 52         f.add(ta, "Center");
 53         f.add(p, "South");
 54         MyServerListener listener = new MyServerListener(this);
 55         send.addActionListener(listener);
 56         tf.addActionListener(listener);
 57         f.addWindowListener(new WindowAdapter() {
 58             public void windowClosing(WindowEvent e) {
 59                 System.exit(0);
 60             }
 61         });
 62         f.setSize(400, 400);
 63         f.setVisible(true);
 64     }
 65
 66     public void createThread() {
 67         MyServerReader reader = new MyServerReader(this);
 68         reader.start();
 69     }
 70
 71     public void close() {
 72         try {
 73             dis.close();
 74             dos.close();
 75             s.close();
 76             ss.close();
 77         } catch (IOException e) {
 78             e.printStackTrace();
 79         }
 80     }
 81
 82     public DataInputStream getDataInputStream() {
 83         return dis;
 84     }
 85
 86     public DataOutputStream getDataOutputStream() {
 87         return dos;
 88     }
 89
 90     public TextArea getTextArea() {
 91         return ta;
 92     }
 93
 94     public TextField getTextField() {
 95         return tf;
 96     }
 97 }
 98
 99 class MyServerListener implements ActionListener {
100     private TestServer server;
101
102     public MyServerListener(TestServer server) {
103         this.server = server;
104     }
105
106     public void actionPerformed(ActionEvent e) {
107         TextField tf = server.getTextField();
108         String info = tf.getText();
109         server.getTextArea().append("自己说: " + info + "\n");
110         try {
111             server.getDataOutputStream().writeUTF(info);
112         } catch (IOException e1) {
113             e1.printStackTrace();
114         }
115         if (info.equals("bye")) {
116             server.clos

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,