資源簡(jiǎn)介
基于javaswing實(shí)現(xiàn)的QQ,已實(shí)現(xiàn),登錄注冊(cè),修改基本信息,記住密碼,聊天,發(fā)送文件,抖動(dòng),發(fā)送表情等功能

代碼片段和文件信息
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客戶端,用來(lái)連接服務(wù)器,
?*?負(fù)責(zé)消息的接收和發(fā)送
?*?
?*?@author?Administrator
?*
?*/
public?class?Client?{
private?Socket?socket;
private?Mainframe?mainframe;
private?Chatframe?chatframe;
public?Client()?{}
/**
?*?設(shè)置窗體,把主窗體傳遞進(jìn)來(lái)
?*?@param?frame
?*/
public?void?setMainframe(Mainframe?mainframe)?{
this.mainframe?=?mainframe;
}
/**
?*?用來(lái)登入QQ號(hào),并且把QQ發(fā)送到服務(wù)器
?*?如果此QQ號(hào)存在,則建立連接
?*?
?*?立馬去開(kāi)啟讀消息線程,檢測(cè)服務(wù)器是否有發(fā)送消息過(guò)來(lái)
?*?@param?account
?*/
public?void?login(Account?account)?{
try?{
socket?=?new?Socket(“l(fā)ocalhost“?Constants.PORT);?//?去連接服務(wù)器
if?(socket?!=?null)?{
objectOutputStream?oos?=?new?objectOutputStream(socket.getOutputStream());?//?實(shí)例化輸出流
oos.writeobject(account);?//?把存放QQ號(hào)的對(duì)象傳遞給服務(wù)器
new?Thread(new?MessageReadThread(socket)).start();
}
}?catch?(UnknownHostException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/**
?*?用來(lái)發(fā)送送消息,?并開(kāi)啟發(fā)消息線程
?*?@param?message
?*/
public?void?sendMessage(Message?message)?{
MessageWriteThread?mwt?=?new?MessageWriteThread(socket);
mwt.setMessage(message);
new?Thread(mwt).start();?//?開(kāi)啟寫消息線程
}
/**
?*?此線程用來(lái)讀取服務(wù)器發(fā)來(lái)的消息,需要一直開(kāi)啟
?*?@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(“接收來(lái)自“?+?message.getFromAccount().getNumber()?+?“的消息:“);
System.out.println(“消息內(nèi)容:“?+?message.getMessage());
if?(chatframe?==?null?||?!chatframe.isVisible())?{?//?如果聊天窗口是不可見(jiàn)的或者沒(méi)有打開(kāi)聊天窗口
mainframe.requstMessage(message);?//?啟動(dòng)消息閃動(dòng)的線程
}?else?{
chatframe.updateMessage(message);?//?更新消息
}
}?else?if?(message.getType()?==?Message.REQUST_MSG)?{
mainframe.requstAddFriend(message);?//?啟動(dòng)消息閃動(dòng)線程
}?else?if?(message.getType()?==?Message.REQUST_REV_MSG)?{
Account?account?=?message.getFromAccount();?//?獲取到發(fā)消息的對(duì)象
AccountDAO?accountDAO?=?new?AccountDAOImpl();
accountDAO.addFriends(message.getToAccount().getNumber()?message.getFromAccount(
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論