资源简介
基于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个文件信息
相关资源
- JavaWeb网上书城项目 界面简洁漂亮 功
- mysql-connector-java-8.0.17.zip
- java socket即时聊天工具 可发文件 实现
- 大学生就业系统-论文-文档
- 基于java的学生管理系统源码
- JavaWeb客户管理系统
- mysql-connector-java-8.0.11
- jsp的网上购物商城
- JspLibrary.zip
- 网上花店的设计与实现毕业论文
- java编写电影购票系统新手专用
- 基于java电影售票系统新手专用类
- 基于java前后端简易电影购票系统新手
- java实现pdf上传、、在线预览、删除、
- Java实现物流跟踪查询+Demo+Word
- JAVA医药管理系统设计(论文+源代码)
- java旅游系统
- Java serlvet+Jdbc+jsp+mysql 用户权限管理系
- Java入门实验程序代码加实验报告全
- 基于Javaweb的酒店订房系统
- mysql-connector-java-5.1.38.zip
- java版结巴分词工具
- 校园点餐系统
- java web 校园宿舍管理系统
- jsp物流中心仓储信息管理系统
- JAVA.JSP人力资源管理系统
- javaSwing推箱子游戏附带地图编辑器
- 基于Java的农村电子商务系统的设计与
- Spire.BarCode_1.4.1_Java条码组件
- 网上购物系统Java带数据库文件
评论
共有 条评论