山寨版QQ源代码.docx

上传人:b****5 文档编号:28789498 上传时间:2023-07-19 格式:DOCX 页数:39 大小:77.19KB
下载 相关 举报
山寨版QQ源代码.docx_第1页
第1页 / 共39页
山寨版QQ源代码.docx_第2页
第2页 / 共39页
山寨版QQ源代码.docx_第3页
第3页 / 共39页
山寨版QQ源代码.docx_第4页
第4页 / 共39页
山寨版QQ源代码.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

山寨版QQ源代码.docx

《山寨版QQ源代码.docx》由会员分享,可在线阅读,更多相关《山寨版QQ源代码.docx(39页珍藏版)》请在冰豆网上搜索。

山寨版QQ源代码.docx

山寨版QQ源代码

关于山寨QQ的java的源代码

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

文库里没有关于山寨QQ的java的源代码,只能看了视频整理自己写了,特免费分享。

文档说明:

根据java教学视频《韩顺平.循序渐进学.java.从入门到精通》(第87~94讲)整理得源相关代码。

代码调试无误,下载后调试有误的可评论留言联系。

image中图片附录在源代码后面。

工程文件夹:

(源代码)

/**

*这是客户端连接服务器的后台

*/

packagecom.qq.client.model;

importcom.qq.client.tools.*;

importjava.util.*;

import.*;

importjava.io.*;

importmon.*;

publicclassQqClientConServer{

publicSockets;

//发送第一次请求

publicbooleansendLoginInfoToServer(Objecto)

{

booleanb=false;

try{

//System.out.println("kk");

s=newSocket("127.0.0.1",9988);

ObjectOutputStreamoos=newObjectOutputStream(s.getOutputStream());

oos.writeObject(o);

ObjectInputStreamois=newObjectInputStream(s.getInputStream());

Messagems=(Message)ois.readObject();

//这里就是验证用户登录的地方

if(ms.getMesType().equals("1"))

{

//就创建一个该qq号和服务器端保持通讯连接得线程

ClientConServerThreadccst=newClientConServerThread(s);

//启动该通讯线程

ccst.start();

ManageClientConServerThread.addClientConServerThread

(((User)o).getUserId(),ccst);

b=true;

}else{

//关闭Scoket

s.close();

}

}catch(Exceptione){

e.printStackTrace();

//TODO:

handleexception

}finally{

}

returnb;

}

publicvoidSendInfoToServer(Objecto)

{

/*try{

Sockets=newSocket("127.0.0.1",9999);

}catch(Exceptione){

e.printStackTrace();

//TODO:

handleexception

}finally{

}*/

}

}

packagecom.qq.client.model;

importmon.*;

publicclassQqClientUser{

publicbooleancheckUser(Useru)

{

returnnewQqClientConServer().sendLoginInfoToServer(u);

}

}

/**

*这是客户端和服务器端保持通讯的线程.

*/

packagecom.qq.client.tools;

importjava.io.*;

import.*;

importcom.qq.client.view.QqChat;

importcom.qq.client.view.QqFriendList;

importmon.*;

publicclassClientConServerThreadextendsThread{

privateSockets;

//构造函数

publicClientConServerThread(Sockets)

{

this.s=s;

}

publicvoidrun()

{

while(true)

{

//不停的读取从服务器端发来的消息

try{

ObjectInputStreamois=newObjectInputStream(s.getInputStream());

Messagem=(Message)ois.readObject();

System.out.println("读取到从服务发来的消息"+m.getSender()+"给"+m.getGetter()+"内容"+

m.getCon());

if(m.getMesType().equals(MessageType.message_comm_mes))

{

//把从服务器获得消息,显示到该显示的聊天界面

QqChatqqChat=ManageQqChat.getQqChat(m.getGetter()+""+m.getSender());

//显示

qqChat.showMessage(m);

}elseif(m.getMesType().equals(MessageType.message_ret_onLineFriend))

{

System.out.println("客户端接收到"+m.getCon());

Stringcon=m.getCon();

Stringfriends[]=con.split("");

Stringgetter=m.getGetter();

System.out.println("getter="+getter);

//修改相应的好友列表.

QqFriendListqqFriendList=ManageQqFriendList.getQqFriendList(getter);

////if(qqFriendList)

//更新在线好友.

if(qqFriendList!

=null)

{

qqFriendList.upateFriend(m);

}

}

}catch(Exceptione){

e.printStackTrace();

//TODO:

handleexception

}

}

}

publicSocketgetS(){

returns;

}

publicvoidsetS(Sockets){

this.s=s;

}

}

/**

*这是一个管理客户端和服务器保持通讯的线程类

*/

packagecom.qq.client.tools;

importjava.util.*;

publicclassManageClientConServerThread{

privatestaticHashMaphm=newHashMap();

//把创建好的ClientConServerThread放入到hm

publicstaticvoidaddClientConServerThread(StringqqId,ClientConServerThreadccst)

{

hm.put(qqId,ccst);

}

//可以通过qqId取得该线程

publicstaticClientConServerThreadgetClientConServerThread(StringqqId)

{

return(ClientConServerThread)hm.get(qqId);

}

}

/**

*这是一个管理用户聊天界面的类

*/

packagecom.qq.client.tools;

importjava.util.*;

importcom.qq.client.view.*;

publicclassManageQqChat{

privatestaticHashMaphm=newHashMap();

//加入

publicstaticvoidaddQqChat(StringloginIdAnFriendId,QqChatqqChat)

{

hm.put(loginIdAnFriendId,qqChat);

}

//取出

publicstaticQqChatgetQqChat(StringloginIdAnFriendId)

{

return(QqChat)hm.get(loginIdAnFriendId);

}

}

/**

*管理好友、黑名单..界面类

*/

packagecom.qq.client.tools;

importjava.util.*;

importjava.io.*;

importcom.qq.client.view.*;

publicclassManageQqFriendList{

privatestaticHashMaphm=newHashMap();

publicstaticvoidaddQqFriendList(Stringqqid,QqFriendListqqFriendList){

hm.put(qqid,qqFriendList);

}

publicstaticQqFriendListgetQqFriendList(StringqqId)

{

return(QqFriendList)hm.get(qqId);

}

}

/**

*这是与好友聊天的界面

*因为客户端,要处于读取的状态,因此我们把它做成一个线程

*/

packagecom.qq.client.view;

importcom.qq.client.tools.*;

importcom.qq.client.model.*;

importmon.*;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

publicclassQqChatextendsJFrameimplementsActionListener{

JTextAreajta;

JTextFieldjtf;

JButtonjb;

JPaneljp;

StringownerId;

StringfriendId;

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//QqChatqqChat=newQqChat("1");

}

publicQqChat(StringownerId,Stringfriend)

{

this.ownerId=ownerId;

this.friendId=friend;

jta=newJTextArea();

jtf=newJTextField(15);

jb=newJButton("发送");

jb.addActionListener(this);

jp=newJPanel();

jp.add(jtf);

jp.add(jb);

this.add(jta,"Center");

this.add(jp,"South");

this.setTitle(ownerId+"正在和"+friend+"聊天");

this.setIconImage((newImageIcon("image/qq.gif").getImage()));

this.setSize(300,200);

this.setVisible(true);

}

//写一个方法,让它显示消息

publicvoidshowMessage(Messagem)

{

Stringinfo=m.getSender()+"对"+m.getGetter()+"说:

"+m.getCon()+"\r\n";

this.jta.append(info);

}

publicvoidactionPerformed(ActionEventarg0){

//TODOAuto-generatedmethodstub

if(arg0.getSource()==jb)

{

//如果用户点击了,发送按钮

Messagem=newMessage();

m.setMesType(MessageType.message_comm_mes);/////////////////////////////////////////!

!

最后一步

m.setSender(this.ownerId);

m.setGetter(this.friendId);

m.setCon(jtf.getText());

m.setSendTime(newjava.util.Date().toString());

//发送给服务器.

try{

ObjectOutputStreamoos=newObjectOutputStream

(ManageClientConServerThread.getClientConServerThread(ownerId).getS().getOutputStream());

oos.writeObject(m);

}catch(Exceptione){

e.printStackTrace();

//TODO:

handleexception

}

}

}

//

//publicvoidrun(){

////TODOAuto-generatedmethodstub

//while(true)

//{

//try{

////读取[如果读不到就等待.]

//ObjectInputStreamois=newObjectInputStream(QqClientConServer.s.getInputStream());

//

//Messagem=(Message)ois.readObject();

//

////显示

//Stringinfo=m.getSender()+"对"+m.getGetter()+"说:

"+m.getCon()+"\r\n";

//this.jta.append(info);

//

//

//

//}catch(Exceptione){

//e.printStackTrace();

////TODO:

handleexception

//}

//

//

//

//}

//

//}

}

/**

*功能:

qq客户端登录界面

*/

packagecom.qq.client.view;

importmon.*;

importcom.qq.client.tools.*;

importjava.io.*;

importjavax.swing.*;

importcom.qq.client.model.QqClientUser;

importmon.User;

importjava.awt.*;

importjava.awt.event.*;

publicclassQqClientLoginextendsJFrameimplementsActionListener{

//定义北部需要的组件

JLabeljbl1;

//定义中部需要的组件

//.中部有三个JPanel,有一个叫选项卡窗口管理

JTabbedPanejtp;

JPaneljp2,jp3,jp4;

JLabeljp2_jbl1,jp2_jbl2,jp2_jbl3,jp2_jbl4;

JButtonjp2_jb1;

JTextFieldjp2_jtf;

JPasswordFieldjp2_jpf;

JCheckBoxjp2_jcb1,jp2_jcb2;

//定义南部需要的组件

JPaneljp1;

JButtonjp1_jb1,jp1_jb2,jp1_jb3;

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

QqClientLoginqqClientLogin=newQqClientLogin();

}

publicQqClientLogin()

{

//处理北部

jbl1=newJLabel(newImageIcon("image/tou.gif"));

//处理中部

jp2=newJPanel(newGridLayout(3,3));

jp2_jbl1=newJLabel("QQ号码",JLabel.CENTER);

jp2_jbl2=newJLabel("QQ密码",JLabel.CENTER);

jp2_jbl3=newJLabel("忘记密码",JLabel.CENTER);

jp2_jbl3.setForeground(Color.blue);

jp2_jbl4=newJLabel("申请密码保护",JLabel.CENTER);

jp2_jb1=newJButton(newImageIcon("image/clear.gif"));

jp2_jtf=newJTextField();

jp2_jpf=newJPasswordField();

jp2_jcb1=newJCheckBox("隐身登录");

jp2_jcb2=newJCheckBox("记住密码");

//把控件按照顺序加入到jp2

jp2.add(jp2_jbl1);

jp2.add(jp2_jtf);

jp2.add(jp2_jb1);

jp2.add(jp2_jbl2);

jp2.add(jp2_jpf);

jp2.add(jp2_jbl3);

jp2.add(jp2_jcb1);

jp2.add(jp2_jcb2);

jp2.add(jp2_jbl4);

//创建选项卡窗口

jtp=newJTabbedPane();

jtp.add("QQ号码",jp2);

jp3=newJPanel();

jtp.add("手机号码",jp3);

jp4=newJPanel();

jtp.add("电子邮件",jp4);

//处理南部

jp1=newJPanel();

jp1_jb1=newJButton(newImageIcon("image/denglu.gif"));

//响应用户点击登录

jp1_jb1.addActionListener(this);

jp1_jb2=newJButton(newImageIcon("image/quxiao.gif"));

jp1_jb3=newJButton(newImageIcon("image/xiangdao.gif"));

//把三个按钮放入到jp1

jp1.add(jp1_jb1);

jp1.add(jp1_jb2);

jp1.add(jp1_jb3);

this.add(jbl1,"North");

this.add(jtp,"Center");

//..把jp1放在南部

this.add(jp1,"South");

this.setSize(350,240);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicvoidactionPerformed(ActionEventarg0){

//TODOAuto-generatedmethodstub

//如果用户点击登录

if(arg0.getSource()==jp1_jb1)

{

QqClientUserqqClientUser=newQqClientUser();

Useru=newUser();

u.setUserId(jp2_jtf.getText()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1