MyServer.java package com.net; /** * 别人做了一次,我自己也来做一次吧 * 服务器端 */ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; @SuppressWarnings("serial") public class MyServer extends JFrame implements KeyListener, ActionListener { JTextArea ja = null; JTextField jf = null; JButton jb = null; JPanel jp = null; JScrollPane jsp = null; PrintWriter pw = null; public MyServer() { ja = new JTextArea(); jf = new JTextField(10); jf.addKeyListener(this); jb = new JButton("发送"); jb.addActionListener(this); jsp = new JScrollPane(ja); jp = new JPanel(); jp.add(jf); jp.add(jb); this.setResizable(false);// 禁止改变窗体大小。 this.add(jsp, "Center"); this.add(jp, "South"); this.setSize(300, 200); this.setLocation(20, 20); this.setTitle("服务器端"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); try { // 服务器在8888进行监听 ServerSocket ss = new ServerSocket(8888); // 等待连接 Socket s = ss.accept(); InputStreamReader isr = new InputStreamReader(s.getInputStream()); BufferedReader br = new BufferedReader(isr); pw = new PrintWriter(s.getOutputStream(), true); while (true) { String info = br.readLine(); ja.append("客户端对服务器说:" + info + "/r/n"); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new MyServer(); } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { String info = jf.getText(); ja.append("服务器对客户端说:" + info + "/r/n"); pw.println(info); jf.setText(""); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == jb) { String info = jf.getText(); ja.append("服务器对客户端说:" + info + "/r/n"); pw.println(info); jf.setText(""); } } } MyClient.java package com.net; /** * 别人做了一次,我自己也来做一次吧 * <br> * 客户端 */ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; @SuppressWarnings("serial") public class MyClient extends JFrame implements KeyListener, ActionListener { JTextArea ja = null; JTextField jf = null; JButton jb = null; JPanel jp = null; JScrollPane jsp = null; PrintWriter pw = null; public MyClient() { ja = new JTextArea(); jf = new JTextField(10); jf.addKeyListener(this); jb = new JButton("发送"); jb.addActionListener(this); jsp = new JScrollPane(ja); jp = new JPanel(); jp.add(jf); jp.add(jb); this.setResizable(false);// 禁止改变窗体大小。 this.add(jsp, "Center"); this.add(jp, "South"); this.setSize(300, 200); this.setLocationRelativeTo(null); this.setTitle("客户端"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); try { Socket s = new Socket("127.0.0.1", 8888); InputStreamReader isr = new InputStreamReader(s.getInputStream()); BufferedReader br = new BufferedReader(isr); pw = new PrintWriter(s.getOutputStream(), true); while (true) { String info = br.readLine(); ja.append("服务器对客户端说:" + info + "/r/n"); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new MyClient(); } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { String info = jf.getText(); ja.append("客户端对服务器说:" + info + "/r/n"); pw.println(info); jf.setText(""); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == jb) { String info = jf.getText(); ja.append("客户端对服务器说:" + info + "/r/n"); pw.println(info); jf.setText(""); } } }