资源简介
基于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个文件信息
相关资源
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
评论
共有 条评论