基于JAVA Swing,Hibernate,MySQL模拟QQ
本人目前只是研究生一名,最近比较清闲,就用手头上会的一点工具写了一个模拟QQ的工具;以下的几篇博客就简单的阐述一下实现思路,以及具体的方法和遇到的一些问题;
配置列表 :
Windows 10
Eclipse 4.7.0
Hibernate 5.5
MySQL 5.7
基本框架 :
框架组成 :
Senter : 信息的发送器;创建Socket和对象输出流;
Accepter : 信息接收器 ;创建ServerSocket和对象输入流;客户端的Accepter还兼资源池的作用,传入的数据会被分类保存在Accepter的静态代码块中;客户端的其他模块会调用该资源池;
JFrames : 客户端生成模拟QQ的各种面板;
Inquirer : 服务器向MySQL交互,增删改查;
信息类 :
User : 客户基本信息: id,name,tempmsg,password,ip等
Message : 消息基本信息: senter,accepter,msg,id,time;
Integer : 由服务器向客户端发送的确认信息;客户端会根据这些不同的信息作出相应的相应;不同的数值代表不同的含义;
其他注意事项:目前该项目还有一些缺陷;比如没有优化服务器的并发问题;传输的数据没有实现加密等;
好了,下面开始讲具体的实现了:首先是登陆面板:
package likeQQ;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginPanel extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField txtAc = new JTextField(15);
private JPasswordField txtPW = new JPasswordField(15);
private JButton LoginBtn = new