java编程_socket_套接字_网络编程_简易的GUI多线程聊天程序
2012-04-29 03:01
926 查看
运行效果:
===============================================================
服务器端代码:
客户端代码:
有关于socket的简单编程基础,大家可以参考:
/article/4667579.html
===============================================================
服务器端代码:
package com.b510.socket1706.gui.freeechatroom; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; /** * 服务器端程序 * * @author Hongten * * @time 2012-4-29 2012 */ public class TestServer { private ServerSocket ss; private Socket s; private DataInputStream dis; private DataOutputStream dos; private TextArea ta; private TextField tf; public static void main(String args[]) { TestServer ts = new TestServer(); ts.createUI(); ts.connect(); ts.createThread(); } public void connect() { try { ss = new ServerSocket(8888); s = ss.accept(); dis = new DataInputStream(s.getInputStream()); dos = new DataOutputStream(s.getOutputStream()); } catch (IOException e) { e.printStackTrace(); // 13701303436 } } public void createUI() { Frame f = new Frame("Server"); ta = new TextArea(); tf = new TextField(); Button send = new Button("send"); Panel p = new Panel(); p.setLayout(new BorderLayout()); p.add(tf, "Center"); p.add(send, "East"); f.add(ta, "Center"); f.add(p, "South"); MyServerListener listener = new MyServerListener(this); send.addActionListener(listener); tf.addActionListener(listener); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(400, 400); f.setVisible(true); } public void createThread() { MyServerReader reader = new MyServerReader(this); reader.start(); } public void close() { try { dis.close(); dos.close(); s.close(); ss.close(); } catch (IOException e) { e.printStackTrace(); } } public DataInputStream getDataInputStream() { return dis; } public DataOutputStream getDataOutputStream() { return dos; } public TextArea getTextArea() { return ta; } public TextField getTextField() { return tf; } } class MyServerListener implements ActionListener { private TestServer server; public MyServerListener(TestServer server) { this.server = server; } public void actionPerformed(ActionEvent e) { TextField tf = server.getTextField(); String info = tf.getText(); server.getTextArea().append("自己说: " + info + "\n"); try { server.getDataOutputStream().writeUTF(info); } catch (IOException e1) { e1.printStackTrace(); } if (info.equals("bye")) { server.close(); System.exit(0); } tf.setText(""); tf.requestFocus(); } } class MyServerReader extends Thread { private TestServer server; public MyServerReader(TestServer server) { this.server = server; } public void run() { String info; DataInputStream dis = server.getDataInputStream(); TextArea ta = server.getTextArea(); try { while (true) { info = dis.readUTF(); ta.append("对方说: " + info + "\n"); if (info.equals("bye")) { server.close(); System.exit(0); } } } catch (IOException e) { e.printStackTrace(); } } }
客户端代码:
package com.b510.socket1706.gui.freeechatroom; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; /** * 客户端程序 * @author Hongten * * @time 2012-4-29 2012 */ public class TestClient { private Socket s; private DataInputStream dis; private DataOutputStream dos; private TextArea ta; private TextField tf; public static void main(String args[]) { TestClient tc = new TestClient(); tc.createUI(); tc.connect(); tc.createThread(); } public void connect() { try { s = new Socket("127.0.0.1", 8888); dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); } catch (IOException e) { e.printStackTrace(); } } public void createUI() { Frame f = new Frame("Client"); ta = new TextArea(); tf = new TextField(); Button send = new Button("send"); Panel p = new Panel(); p.setLayout(new BorderLayout()); p.add(tf, "Center"); p.add(send, "East"); f.add(ta, "Center"); f.add(p, "South"); MyClientListener listener = new MyClientListener(this); send.addActionListener(listener); tf.addActionListener(listener); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(400, 400); f.setLocation(600, 0); f.setVisible(true); } public void createThread() { MyClientReader reader = new MyClientReader(this); reader.start(); } public void close() { try { dis.close(); dos.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } } public DataInputStream getDataInputStream() { return dis; } public DataOutputStream getDataOutputStream() { return dos; } public TextArea getTextArea() { return ta; } public TextField getTextField() { return tf; } } class MyClientListener implements ActionListener { private TestClient client; public MyClientListener(TestClient client) { this.client = client; } public void actionPerformed(ActionEvent e) { TextField tf = client.getTextField(); String info = tf.getText(); client.getTextArea().append("自己说: " + info + "\n"); try { client.getDataOutputStream().writeUTF(info); } catch (IOException e1) { e1.printStackTrace(); } if (info.equals("bye")) { client.close(); System.exit(0); } tf.setText(""); tf.requestFocus(); } } class MyClientReader extends Thread { private TestClient client; public MyClientReader(TestClient client) { this.client = client; } public void run() { String info; DataInputStream dis = client.getDataInputStream(); TextArea ta = client.getTextArea(); try { while (true) { info = dis.readUTF(); ta.append("对方说: " + info + "\n"); if (info.equals("bye")) { client.close(); System.exit(0); } } } catch (IOException e) { e.printStackTrace(); } } }
有关于socket的简单编程基础,大家可以参考:
/article/4667579.html
相关文章推荐
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- Socket网络编程--聊天程序(1)
- 多线程socket编程--聊天程序
- 基于socket的Linux上的网络聊天程序--多线程的服务器
- Java编程思想之网络编程(二)套接字Socket
- Socket网络编程--聊天程序(6)
- 多线程,GUI,Socket网络编程
- java编程_socket_套接字_网络编程
- linux基础编程 套接字socket 完整的服务器端多线程socket程序【转】
- 多线程socket编程--聊天程序
- Socket网络编程--聊天程序(9)
- 多线程socket编程--聊天程序
- java 聊天程序 socket网络编程
- 多线程socket编程--聊天程序
- Socket网络编程--聊天程序(2)
- Socket网络编程--聊天程序(7)
- linux基础编程 套接字socket 完整的服务器端多线程socket程序
- Java Socket 编程——多线程网络聊天程序
- Socket网络编程--聊天程序(4)