• 大小: 5.74MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-16
  • 语言: Java
  • 标签: java  qq  swing  jframe  程序  

资源简介

基于javaswing实现的QQ,已实现,登录注册,修改基本信息,记住密码,聊天,发送文件,抖动,发送表情等功能

资源截图

代码片段和文件信息

package com.jh.client;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.objectInputStream;
import java.io.objectOutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;

import com.jh.bean.Account;
import com.jh.bean.Message;
import com.jh.common.Constants;
import com.jh.dao.AccountDAO;
import com.jh.dao.AccountDAOImpl;
import com.jh.ui.Chatframe;
import com.jh.ui.Mainframe;

/**
 * QQ客户端,用来连接服务器,
 * 负责消息的接收和发送
 * 
 * @author Administrator
 *
 */
public class Client {

private Socket socket;
private Mainframe mainframe;
private Chatframe chatframe;

public Client() {}

/**
 * 设置窗体,把主窗体传递进来
 * @param frame
 */
public void setMainframe(Mainframe mainframe) {
this.mainframe = mainframe;
}

/**
 * 用来登入QQ号,并且把QQ发送到服务器
 * 如果此QQ号存在,则建立连接
 * 
 * 立马去开启读消息线程,检测服务器是否有发送消息过来
 * @param account
 */
public void login(Account account) {
try {
socket = new Socket(“localhost“ Constants.PORT); // 去连接服务器
if (socket != null) {
objectOutputStream oos = new objectOutputStream(socket.getOutputStream()); // 实例化输出流
oos.writeobject(account); // 把存放QQ号的对象传递给服务器
new Thread(new MessageReadThread(socket)).start();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
 * 用来发送送消息, 并开启发消息线程
 * @param message
 */
public void sendMessage(Message message) {
MessageWriteThread mwt = new MessageWriteThread(socket);
mwt.setMessage(message);
new Thread(mwt).start(); // 开启写消息线程
}

/**
 * 此线程用来读取服务器发来的消息,需要一直开启
 * @author Administrator
 *
 */
class MessageReadThread implements Runnable {

private Socket socket;

public MessageReadThread(Socket socket) {
this.socket = socket;
}

@Override
public void run() {
while (true) {
try {
Thread.sleep(Constants.MESSAGE_SLEEP);
objectInputStream ois = new objectInputStream(socket.getInputStream());
object obj = ois.readobject();
if (obj instanceof Message) {
Message message = (Message) obj;
if (message != null) {
chatframe = mainframe.getChatframes().get(message.getFromAccount());
if (message.getType() == Message.NORMAL_MSG) {
System.out.println(“接收来自“ + message.getFromAccount().getNumber() + “的消息:“);
System.out.println(“消息内容:“ + message.getMessage());
if (chatframe == null || !chatframe.isVisible()) { // 如果聊天窗口是不可见的或者没有打开聊天窗口
mainframe.requstMessage(message); // 启动消息闪动的线程
} else {
chatframe.updateMessage(message); // 更新消息
}
} else if (message.getType() == Message.REQUST_MSG) {
mainframe.requstAddFriend(message); // 启动消息闪动线程
} else if (message.getType() == Message.REQUST_REV_MSG) {
Account account = message.getFromAccount(); // 获取到发消息的对象
AccountDAO accountDAO = new AccountDAOImpl();
accountDAO.addFriends(message.getToAccount().getNumber() message.getFromAccount(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-13 01:40  QQProject-master\
     文件         189  2017-02-13 01:40  QQProject-master\.gitignore
     文件       11514  2017-02-13 01:40  QQProject-master\LICENSE
     目录           0  2017-02-13 01:40  QQProject-master\MyQQClient\
     文件         371  2017-02-13 01:40  QQProject-master\MyQQClient\.classpath
     文件         369  2017-02-13 01:40  QQProject-master\MyQQClient\.project
     目录           0  2017-02-13 01:40  QQProject-master\MyQQClient\.settings\
     文件         587  2017-02-13 01:40  QQProject-master\MyQQClient\.settings\org.eclipse.jdt.core.prefs
     目录           0  2017-02-13 01:40  QQProject-master\MyQQClient\bin\
     目录           0  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\
     文件        3489  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\PaiPai.png
     文件        3798  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\QQGame.png
     文件        2037  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\QQGroup.png
     文件        3680  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\QQPCMgr.png
     文件        3784  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\QQPet.png
     文件        3563  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\QQSafe.png
     文件        1252  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\Tourism.png
     文件        3770  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\WirelessLive.png
     文件      146716  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\ad.png
     文件        2487  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\add_acc.png
     文件        1901  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\apply.png
     文件      147285  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\applyManage.png
     文件         311  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\applyManage_icon.png
     文件      131337  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\background1.png
     文件      131182  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\background2.png
     文件       67085  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\background3.png
     文件         626  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\beautiful.png
     文件        1992  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\bottom_01.png
     文件        2519  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\bottom_02.png
     文件        2129  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\bottom_03.png
     文件        2204  2017-02-13 01:40  QQProject-master\MyQQClient\bin\images\bottom_04.png
............此处省略519个文件信息

评论

共有 条评论