欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    关于山寨QQ的java的源代码.docx

    • 资源ID:481588       资源大小:51.78KB        全文页数:25页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    关于山寨QQ的java的源代码.docx

    关于山寨QQ的java的源代码Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,JaVa更具备了显著优势和广阔前景。文库里没有关于山寨QQ的java的源代码,只能看了视频整理自己写了,特免费分享。文档说明:根据java教学视频韩顺平.循序渐进学java.从入门到精通(第8794讲)整理得源相关代码。代码调试无误,下载后调试有误的可评论留言联系。image中图片附录在源代码后面。工程文件夹:,一一.o.一.-V/赘ZTestQqClient,src"田com.qq.client.modelI:*t)QqclientConServerjavaJ2)QqClientUserjava田com.qq.dienttools>JJ)ClientConServerThreadjavat>ManageclientConServerThreadjaval>mManageQqChatjavaT)ManageQqFriendIjstjava,com.qq.dient.viewl>jj)QqChatJava»QqCIientLoginjava>mQqFriendListjava,田mon:jj)Messagejava02)MessageTypejavat>川Userjava>3JRESystemLibraryJavaSE-1.6&image国clear.gif阖denglu.gif国mm.jpg3qqgif屈quxiao.gif三Thumbs.db国tou.gif溷xiangdao.gifr三rotnyDuxpiwiSioW2TestQqClient濯2TestQqServerSSrCJBmonMessagejava团MessageTypeJava辽IUserjavacom.qq.server.db加com.qq.server.model功ManageCIientThreadjavaMyQqServerjavamSerConClientThreadjavacom.qq.server.tls曲com.qq.server.view团MyServerFramejavaBJRESystemLibraryJavaSE-1.6(源代码)/*这是客户端连接服务器的后台*/packagecom.qq.client.model;importcom.qq.client.tools.*;importjava.util.*;.*;importjava.io.*;mon.*;publicclassQqC1ientConServerpublicSockets;发送第一次请求publicbooleansendLoginInfoToServer(Objecto)(booleanb=false;try(/System.out.println(,kk");s=newSocket("127.0.0.,9988);ObjectOutputStreamoos=newObjectOutputStream(s.getOutputStream();oos.writebject(o);ObjectInputStreamois=newObjectInputStream(s.getInputStream();Messagems=(Message)ois.readObject();这里就是验证用户登录的地方if(ms.getMesType().equa!s("1")就创建个该qq号和服务器端保持通讯连接得线程ClientConServerThreadccst=newClientConServerThread(三);启动该通讯线程ccst.start();ManageClientConServerThread.addClientConServerThread(User)o).getUserId(),ccst);b=true;)else关闭Scokets.close();)catch(Exceptione)e.printStackTrace();/TODO:handleexceptionfinally1returnb;)publicvoidSendInfoToServer(Objecto)(*trySockets=newSocket(127.0.0.1",9999);)catch(Exceptione)e.printStackTrace();/TODO:handleexception)finally)*/11packagecom.qq.client.model;mon.*;publicclassQqCIientUserpublicbooleancheckUser(Useru)(returnnewQqClientConServerQ.sendLoginlnfoToServer(u);)*这是客户端和服务器端保持通讯的线程.*/packagecom.qq.client.tools;importjava.io.*;.*;importcom.qq.client.view.QqChat;importcom.qq.client.view.QqFriendList;mon.*;publicclassClientConServerThreadextendsThreadprivateSockets;构造函数publicClientConSen,erThread(Sockets)1this.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);1)catch(Exceptione)e.printStackTrace();/TODO:handleexception1)publicSocketgetS()returns;)publicvoidsetS(Sockets)this.s=s;)*这是一个管理客户端和服务器保持通讯的线程类*/packagecom.qq.client.tools;importjava.util.*;publicclassManageciicntConServerThreadprivatestaticHashMaphm=newHashMap<String,ClientConServerThread>();把创建好的ClientConServerThread放入到IhmpublicstaticvoidaddClientConServerThread(Stringqqld,ClientConServerThreadccst)(hm.put(qqld,ccst);1可以通过qqld取得该线程publicstaticClientConServerThreadgetClientConServerThread(Stringqqld)(return(ClientCOnSerVerThread)hm.get(qqld);)*这是一个管理用户聊天界面的类*/packagecom.qq.client.tools;importjava.util.*;importcom.qq.client.view.*;publicclassManageQqChatprivatestaticHashMaphm=nevHashMap<String,QqChat>();加入publicstaticvoidaddQqChat(StringIoginIdAnFriendId5QqChatqqChat)(hm.put(loginIdAnFriendId,qqChat);)取出publicstaticQqChatgetQqChat(StringIoginIdAnFriendId)(return(QqChat)hm.get(loginIdAnFriendId);)*管理好友、黑名单,界面类*/packagecom.qq.clicnt.tools;importjava.util.*;importjava.io.*;importcom.qq.client.view.*;publicclassManageQqFriendListprivatestaticHashMaphm=newHashMap<String,QqFriendList>();publicstaticvoidaddQqFriendList(Stringqqid,QqFriendListqqFriendList)hm.put(qqid,qqFriendList);1publicstaticQqFriendListgetQqFriendList(Stringqqld)(return(QqFriendList)hm.get(qqId);11* 这是与好友聊天的界面* 因为客户端,要处于读取的状态,因此我们把它做成一个线程* /packagecom.qq.client.view;importcom.qq.client.tools.*;importcom.qq.client.model.*;mon.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassQqChatextendsJFrameimplementsActionListenerfJTextAreajta;JTextFieldjtf;JButtonjb;JPaneljp;Stringownerld;Stringfriendld;publicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstub/QqChatqqChat=newQqChat(',);publicQqChat(Stringownerld,Stringfriend)(this.ownerld=ownerld;this.friendld=friend;jta=newJTextArea();jtf=newJTextField(15);jb=newJBUttOn("发送");jb.addActionListener(Ihis);jp=newJPanel();jp.add(jtf);jp.add(jb);this.add(jta,"Center");this.add(jp,"South");this.setTitle(ownerId+"正在和"+friend+"聊天");this.setlconlmage(newImagelcon("imageqq.gif,).getlmage();this.setSize(300,200);this.setVisible(true);)写一个方法,让它显示消息publicvoidshowMessage(Messagem)(Stringinfo=m.getSender()+"对"+m.getGetter()+"说:"+m.getCon()+"rr;this.jta.append(info);1publicvoidactionPerformed(ActionEventarg)/TODOAuto-generatcdmethodstubif(arg0.getSource()=jb)(如果用户点击了,发送按钮Messagem=newMessage();m.setMesType(MessageType.message_comm_mes);/川最后一步m.setSender(this.ownerId);m.setGetter(this.friendld);m.setCon(jtf.getText();m.setSendTime(newjava.util.Date().toString();发送给服务器.try(ObjectOutputStreamoos=newObjectOutputStream(ManageCIicntConServerThread.getCIientConServerThread(ownerId).getS().getOutputStream();oos.writebject(m);catch(Exceptione)e.printStackTrace();/TODO:handleexception1)/publicvoidrun()/TODOAuto-generatedmethodstub/while(true)(try(/读取如果读不到就等待./ObjectInputStreamObjectInputStream(QqClientConServer.s.getInputStream();/Messagem=(Message)ois.readObject();/显示ois=new/Stringinfo=m.getSender()+"对"+m.getGetter()+"/this.jta.append(info);/catch(Exceptione)/e.printStackTrace();/TODO:handleexception/1/H说:"+m.getCon()+"rn"*功能:qq客户端登录界面*/packagecom.qq.client.view;mon.*;importcom.qq.client.tools.*;importjava.io.*;importjavax.swing.*;importcom.qq.client.model.QqClientUser;mon.User;importjava.awt.*;importjava.awt.event.*;publicclassQqClientLoginextendsJFrameimplementsActionListenerf定义北部需要的组件JLabeljbll;定义中部需要的组件.中部有三个JPaneI,有一个叫选项卡窗口管理JTabbedPanejtp;JPaneljp2,jp3,jp4;JLabeljp2Jbl1,jp2Jbl2,jp2Jbl3,jp2Jbl4;JButtonjp2_jbl;JTextFieldjp2Jtf;JPasswordFieldjp2Jpf;JCheckBoxjp2Jcb1Jp2jcb2;定义南部需要的组件JPaneljpl;JButtonjplJbl,jpI_jb2jpl_jb3;publicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubQqClientLoginqqCIientLogin=newQqClientLoginO;)publicQqClientLoginO处理北部jbll=newJLabel(newImagelcon("image/tou.gif');处理中部jp2=newJPanel(newGridLayout(3,3);jp2jbll=newJLabel("QQ号码"JLabeI.CENTER);jp2Jb12=newJLabcl("QQ密码",JLabeLCENTER);jp2Jb13=newJLabel("忘记密码",JLabeLCENTER);jp2_jbl3.SetForeground(ColoEblue);jp2Jb14=newJLabe1("申请密码保护",JLabeLCENTER);jp2,jbl=newJButton(newImageIcon("imageclear.gi);jp2Jtf=newJTextFieldO;jp2_jpf=newJPasswordField();jp2_jcb1=newJCheckBox("隐身登录");jp2,jcb2=newJCheCkBOX("记住密码");把控件按照顺序加入到jp2jp2.add(jp2Jbll);jp2.add(jp2Jtf);jp2.add(jp2Jbl);jp2.add(jp2Jb12);jp2.add(jp2Jpf);jp2.add(jp2Jb13);jp2.add(jp2Jcbl);jp2.add(jp2Jcb2);jp2.add(jp2Jb14);创建选项卡窗口jtp=newJTabbedPaneO;jtp.add("QQ号码”,jp2);jp3=newJPanel();jtp.add("手机号码”,jp3);jp4=newJPanel();jtp.add(“电子邮件”Jp4);处理南部jpl=newJPanel();jpl_jbl=newJButton(newImagelcon("imagedenglu.gif);响应用户点击登录jpl_jb1.addActionListener(Ihis);jpl-jb2=newJButton(newImagelcon("imagequxiao.gif);jpljb3=newJButton(newImagelcon("imagexiangdao.gif,);把三个按钮放入到jpljpl.add(jpljbl);jpl.add(jpljb2);jpl.add(jpljb3);this.add(jbll,"North");this.add(jtp,Center");/.把jpl放在南部this.add(jpl,"South");this.setSize(350,240);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);1publicvoidactionPerformed(ActionEventarg)/TODOAuto-generatcdmethodstub如果用户点击登录if(arg0.getSource()=jp1_jb1)(QqClientUserqqClientUser=newQqClicntUserO;Useru=newUser();u.setUserId(jp2Jtf.getText().trim();u.setPasswd(newString(jp2_jpf.getPassword();if(qqCIientUser.checkUser(u)(try(把创建好友列表的语句提前.QqFriendListqqList=newQqFriendList(u.getUserId();ManageQqFriendList.addQqFriendList(u.getUserId(),qqList);/发送一个要求返回在线好友的请求包.ObjectOutputStreamoos=newObjectOutputStream(ManageCIicntConServerThread.getClientConSen,erThread(u.getUserId().getS().getOutputStream();做j个MessageMessagem=newMessage();m.setMesType(MessageType.message_get_onLineFriend);/指明我要的是这个qq号的好友情况.m.setSender(u.getUserId();oos.writebject(m);catch(Exceptione)e.printStackTrace();/TODO:handleexception关闭掉登录界面this.dispose();)elseJOptionPane.showMessageDialog(this,"户名密码错误");111*我的好友列表,(也包括陌生人,黑名单)*/packagecom.qq.client.view;importcom.qq.client.tools.*;mon.Message;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassQqFriendListextendsJFrameimplementsActionListener,MouseListener/处理第一张卡片.JPaneljphyI,jphy2,jphy3;JButtonjphyjbl,jphyjb2,jphyjb3;JScrollPanejspl;Stringowner;处理第二张卡片(陌生人)JPaneljpmsrl,jpmsr2,jpmsr3;JButtonjpmsr_Jbl,jpmsr_Jb2,jpmsr_Jb3;JScrollPanejsp2;JLabeljbls;把整个JFrame设置成CardLayoutCardLayoutcl;publicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstub/QqFriendListqqFriendList=newQqFriendListO;1更新在线的好友情况publicvoidupateFriend(Messagem)(StringonLineFriend=m.getCon().split(",');for(inti=0;i<onLineFriend.length;i+)(jblsInteger.parseInt(onLineFriendi)-l.setEnabled(true);11publicQqFriendListCStringownerld)(this.owner=ownerld;处理第一张卡片(显示好友列表)jphy.jb1=newJBUtton("我的好友");jphy_jb2=newJBUttOn("陌生人");jphyJb2.addActionListener(this);jphy_jb3=newJBUttOn("黑名单”);jphy1=newJPanel(newBorderLayoutO);假定有50个好友jphy2=newJPanel(newGridLayOUt(501,4,4);/给jphy2,初始化50好友.jbls=newJLabel50;fbr(inti=O;i<jbls.Iength;i+)(jb1si=newJLabel(i+l+"'newImagelcon(,'imagemm.jpg"),JLabeI.LEFT);jb1si.setEnabled(false);if(jb1si.getText().equa!s(ownerId)(jblsi.setEnabled(true);jb1si.addMouseListener(this);jphy2.add(jblsi);1jphy3=newJPanel(newGridLayout(2,l);把两个按钮加入到jphy3jphy3.add(jphyjb2);jphy3.add(jphyjb3);jspl=newJScrollPane(jphy2);对jphyl,初始化jphyl.add(jphy_jb1,"North");jphy1.add(jsp1,"Center*');jphy1.add(jphy3,"South'1);处理第二张卡片jpmsjjbl=newJButton("我的好友");jpmsr,jb1.addActionListenerCthis);jpmsr_jb2=newJButton("陌生人");jpmsrjb3=newJBUttOn(“黑名单”);jpmsrl=newJPaneI(newBorderLayoutO);假定有20个陌生人jpmsr2=newJPanel(newGridLayout(20,1,4,4);给jphy2,初始化20陌生人.JLabeljbls2=newJLabeI20;for(inti=0;i<jbls2.length;1+)(jb1s2i=newJLabel(i+1+"",newImageIcon("imagemm.jpg"),JLabel.LEFT);jpmsr2.add(jb1s2i);)jpmsr3=newJPanel(newGridLayout(2,l);把两个按钮加入到jphy3jpmsr3.add(jpmsr-jbl);jpmsr3.add(jpmsrjb2);jsp2=newJScroIIPane(jpmsr2);对jphyl,初始化jpmsrl.add(jpmsr3,"North");jpmsrl.add(jsp2,'Center");jpmsrl.add(jpmsr_jb3,"South");cl=newCardLayout();this.setLayout(cl);this.add(jphyl,",);this.add(jpmsrl,2");在窗口显示自己的编号.this.setTitle(ownerId);this.setSize(250,600);this.setVisible(true);1publicvoidactionPerformed(ActionEventarg)/TODOAuto-generatedmethodstub如果点击了陌生人按钮,就显示第二张卡片if(arg0.getSource()=jphyjb2)(cl.show(this.getContentPane(),"2");(elseif(arg0.getSource()=jpmsr_jb1)cl.show(this.getContentPane(),"1");)publicvoidmouseCIicked(MouseEventarg)/TODOAuto-generatedmethodstub响应用户双击的事件,并得到好友的编号.if(arg0.getClickCount()=2)(得到该好友的编号StringfriendNo=(JLabel)arg0.getSource().getText();/System.out.println("你希望和"+friendNo+聊天");QqChatqqChat=newQqChat(this.owner,friendNo);/把聊天界面加入到管理类ManageQqChat.addQqChat(this.owner+""+friendNo,qqChat);11publicvoidmouseEntered(MouseEventarg)/TODOAuto-generatedmethodstubJLabeljl=(JLabel)arg0.getSource();jLsetForeground(ColoLred);)publicvoidmouseExited(MouseEventarg)/TODOAuto-generatedmethodstubJLabelji=(JLabel)arg0.getSource();JLsetForeground(ColoEblack);1publicvoidmousePressed(MouseEventarg)/TODOAuto-generatedmethodstub1publicvoidmouseReleased(MouseEventarg)/TODOAuto-generatedmethodstub)mon;publicclassMeSSageimplementsjava.io.SerializableprivateStringmesType;privateStringsender;privateStringgetter;privateStringcon;privateStringsendTime;publicStringgetSenderOreturnsender;)publicvoidsetSender(Stringsender)this.sender=sender;publicStringgetGetter()returngetter;publicvoidsetGetter(Stringgetter)this.getter=getter;publicStringgetCon()returncon;publicvoidsetCon(Stringcon)this.con=con;publicStringgetSendTime()returnsendTime;publicvoidsetSendTime(StringsendTime)this.sendTime=sendTime;publicStringgetMesType()returnmesType;publicvoidsetMesType(StringmesType)this.mesType=mesType;*定义包的种类*/mon;publicinterfaceMessageTypeStringmessage-succeed="1明是登陆成功1StringmessageOgin_fail="2"表明登录失败Stringmessage_comm_mes="3"普通信息包Stringmessage-geLonLineFriend="4"/要求在线好友的包Stringmessage_ret_onLineFriend="5",返回在线好友的包*这是用户信息类*/mon;publicclassUserimplementsjava.io.SerializableprivateStringuserid;privateStringpasswd;publicStringgetUserId()returnuserid;)publicvoidsetUserId(Stringuserid)this.userld=userid;)publicStringgetPasswd()returnpasswd;)publicvoidsetPasswd(Stringpasswd)this.passwd=passwd;)mon;publicclassMeSSageimplementsjava.io.SerializableprivateStringmesType;

    注意事项

    本文(关于山寨QQ的java的源代码.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开