本源码实现了群聊和私聊
截图如下:
代码文件清单如下:
Client.java、ClientThread.java、Server.java、ServerThread.java共四个java文件
因为本人的能力有限,如果你觉得那里有不合理的地方可以给我留言或者q我
下面是Client.java代码内容:
===================================================================================================
package cc;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class Client extends JFrame implements ActionListener {
private JPanel jp;
private JButton connect, send, exit;
private JTextArea ja;
private Socket socket = null;
public JTextArea getJa() {
return ja;
}
public void setJa(JTextArea ja) {
this.ja = ja;
}
private JTextField juser, jmess;
private JScrollPane jsp;
private JComboBox jcb;
public JComboBox getJcb() {
return jcb;
}
public void setJcb(JComboBox jcb) {
this.jcb = jcb;
}
public Client() {
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
into();
this.setBounds(100, 200, 390, 350);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void into() {
jp = new JPanel();
jp.setLayout(null);
this.add(jp);
juser = new JTextField();
juser.setBounds(60, 15, 150, 20);
jp.add(juser);
connect = new JButton("Connect");
connect.addActionListener(this);
connect.setBounds(220, 15, 80, 20);
jp.add(connect);
j