版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计之杨若古兰创作指点教师题目收集聊天室课程设计专业计算机科学与技术2)电子工业出版社《JAVA程序设计实用教程》,叶核亚编著三、设计完成后提交的文件和图表2)电子工业出版社《JAVA程序设计实用教程》,叶核亚编著考材料成绩评定表目录私達D美践D能力空高伪石忙伪、学凡於知識空運用才石己匕小τ专τ行测τ更忙創造Lτ、黄舍付特忙2過間手配Lτ、私達忙VisualC++D課程D設計D美習己D7了(ⅣD詳L〉說明付VisualC++6.0環境D下τ、1二D〉7卜吻工アD過程空設計Lτ、己D〉7卜吻工ア付各種D亏ー夕D個数空統計L忙Dτ才.己D〉7卜吻工アD機能付、工ー扩ー付1段D文字空入力Lτ、〉7卜吻工ア付文字D中D各類D亏ー夕D数空記录Lτ、英文D亏ー夕D数、数字D亏ー夕D数、空欄D亏ー夕D数匕子扎D夕(了D亏ー夕D数空含凡τ、子Lτ子扎j空明j小忙示L去才.以下、課程空通Lτ說明空設計Lτ、亏ー夕付〉7卜吻工アD說明空統計Lτ、了口勿方么付說明空調整Lτ、然括女状D方面空開凳Lτ、詳L〈己D了口勿方么D剿作D過程空說明Lτ、感化、各種D美行才石己匕小τ专石操纵.八Ψr7了(Ⅳ件、电报、电话等曾经难以满足人们的交流请求,在互联网流方式曾经成为必定潮流.是以出现了QQ等聊天工具,然而QQ等聊天工具虽然方便、实用,但是,文娱功能太多,有很多吸惹人的文娱功能,实用性的即时通讯软件.用户接收的各种动静.环境需求分析运转环境:Windows9x、2000、XP、Windows7是客户端的登陆,客户端在登陆时,必须设次要检测到有一个连接请求,那么服务器就理它的各种请求.对于客户端的各种请求,实际上都是通过在客户发往服务器静,服务器便会根据其尾部的目的信息,向目标端转发该条动静.这里额外要说的是,该零碎特此外对用户发来的体信息,不但能够防止向第三方的泄露,而且即使服务器端出现异常,信息也不会泄露.对于私聊的方式,该零碎所采取的方法类似于QQ的通信方式,由发起方主动连接,当建立服务器连接请求接收请求后创建publicclassAppServerextendsThread{privateServerSocketserverSocket;privateServerFramesFrame;privatestaticVectoruserOnline=newVector(1,1);privatestaticVectorv=newVector(1,1);/***创建服务器启动服务监听1001端口**/publicAppServer(){sFrame=newServerFrame();try{serverSocket=newServerSocket(1001);//获取服务器的主机名和IP地址InetAddressaddress=InetAddress.getLocalHost();sFrame.txtServerName.setText(address.getHostName());sFrame.txtIP.setText(address.getHostAddress());sFrame.txtPort.setText("1001");}catch(IOExceptione){fail(e,"}sFrame.txtStatus.setText("已启动...");this.start();//启动线程}/***退出服务器**异常*退出信息*/publicstaticvoidfail(Exceptione,Stringstr){System.out.println(str+"."+e);}/***监听客户的请求,当有效户请求时创建Connection线程*/publicvoidrun(){try{while(true){Socketclient=serverSocket.accept();newConnection(sFrame,client,userOnline,v);//撑持多线程//System.out.println("userLength:"+userLength);}}catch(IOExceptione){System.out.println("不克不及监听");}}/***启动服务器*/publicstaticvoidmain(Stringargs[]){newAppServer();}}publicclassServerFrameextendsJFrameimplementsActionListener{publicJListlist;/****/privatestaticfinallongserialVersionUID=-8936397327038098620L;JPanelpnlServer,pnlServerInfo;JLabellblStatus,lblNumber,lblMax,lblServerName,lblProtocol,lblIP,lblPort,lblLog;publicJTextFieldtxtStatus,txtNumber,txtMax,txtServerName,txtProtocol,txtIP,txtPort;JButtonbtnStop,btnSaveLog;publicTextAreataLog;JTabbedPanetpServer;publicTextAreataMessage;JPanelpnlUser;publicJLabellblMessage,lblUser,lblNotice,lblUserCount;JListlstUser;JScrollPanespUser;JTextFieldtxtNotice;JButtonbtnSend,btnKick;publicStringti="";publicStringserverMessage="";publicServerFrame(){super("[HappyChat]聊天服务器");setSize(550,500);setDefaultClo搜索引擎优化peration(JFrame.EXIT_ON_CLOSE);setResizable(false);Dimensionscr=Toolkit.getDefaultToolkit().getScreenSize();//在屏幕居中Dimensionfra=this.getSize();if(fra.width>scr.width){fra.width=scr.width;}if(fra.height>scr.height){fra.height=scr.height;}this.setLocation((scr.width-fra.width)/2,(scr.height-fra.height)/2);//==========服务器信息面板=========================pnlServer=newJPanel();pnlServer.setLayout(null);pnlServerInfo=newJPanel(newGridLayout(14,1));pnlServerInfo.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(""),BorderFactory.createEmptyBorder(1,1,1,1)));lblStatus=newJLabel("当前形态:");txtStatus=newJTextField(10);txtStatus.setEditable(false);lblNumber=newJLabel("当前在耳目数:");txtNumber=newJTextField("0人",10);txtNumber.setEditable(false);lblMax=newJLabel("最多在耳目数:");txtMax=newJTextField("50人",10);txtMax.setEditable(false);lblServerName=newJLabel("服务器名称:");txtServerName=newJTextField(10);txtServerName.setEditable(false);lblProtocol=newJLabel("访问和谈:");txtProtocol=newJTextField("HTTP",10);txtProtocol.setEditable(false);lblIP=newJLabel("服务器IP:");txtIP=newJTextField(10);txtIP.setEditable(false);lblPort=newJLabel("服务器端口:");txtPort=newJTextField("8000",10);txtPort.setEditable(false);btnStop=newJButton("关闭服务器(C)");btnStop.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){closeServer();}});lblLog=newJLabel("[服务器日志]");taLog=newTextArea(20,50);btnSaveLog=newJButton("保管日志(S)");btnSaveLog.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){saveLog();}});pnlServerInfo.add(lblStatus);pnlServerInfo.add(txtStatus);pnlServerInfo.add(lblNumber);pnlServerInfo.add(txtNumber);pnlServerInfo.add(lblMax);pnlServerInfo.add(txtMax);pnlServerInfo.add(lblServerName);pnlServerInfo.add(txtServerName);pnlServerInfo.add(lblProtocol);pnlServerInfo.add(txtProtocol);pnlServerInfo.add(lblIP);pnlServerInfo.add(txtIP);pnlServerInfo.add(lblPort);pnlServerInfo.add(txtPort);pnlServerInfo.setBounds(5,5,100,400);lblLog.setBounds(110,5,100,30);taLog.setBounds(110,35,400,370);btnStop.setBounds(200,410,120,30);btnSaveLog.setBounds(320,410,120,30);pnlServer.add(pnlServerInfo);pnlServer.add(lblLog);pnlServer.add(taLog);pnlServer.add(btnStop);pnlServer.add(btnSaveLog);//===========在线用户面板====================pnlUser=newJPanel();pnlUser.setLayout(null);lblMessage=newJLabel("[用户动静]");taMessage=newTextArea(20,20);lblNotice=newJLabel("通知:");txtNotice=newJTextField(20);btnSend=newJButton("发送(S)");btnSend.setEnabled(true);btnSend.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){serverMessage();}});lblUserCount=newJLabel("在线总人数0人");btnKick=newJButton("踢人(K)");btnKick.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){tiRen();}});lblUser=newJLabel("[在线用户列表]");lstUser=newJList();lstUser.setVisibleRowCount(17);lstUser.setFixedCellWidth(180);//指定的固定单元格宽度值,而不是从列表元素计lstUser.setFixedCellHeight(18);spUser=newJScrollPane();spUser.setVerticalScrollBarPolicy(JScrollPane.spUser.getViewport().setView(lstUser);lblMessage.setBounds(5,5,100,25);taMessage.setBounds(5,35,300,360);lblUser.setBounds(310,5,100,25);spUser.setBounds(310,35,220,360);lblNotice.setBounds(5,410,40,25);txtNotice.setBounds(50,410,160,25);btnSend.setBounds(210,410,80,25);lblUserCount.setBounds(320,410,100,25);btnKick.setBounds(440,410,80,25);pnlUser.add(lblMessage);pnlUser.add(taMessage);pnlUser.add(lblUser);pnlUser.add(spUser);list=newJList();list.setListData(newString[]{""});spUser.setViewportView(list);pnlUser.add(lblNotice);pnlUser.add(txtNotice);pnlUser.add(btnSend);pnlUser.add(lblUserCount);pnlUser.add(btnKick);//============主标签面板========================tpServer=newJTabbedPane(JTabbedPane.TOP);tpServer.add("服务器管理",pnlServer);tpServer.add("用户信息管理",pnlUser);this.getContentPane().add(tpServer);setVisible(true);}protectedvoidserverMessage(){this.serverMessage=txtNotice.getText();txtNotice.setText("");}protectedvoidcloseServer(){this.dispose();}protectedvoidsaveLog(){try{FileOutputStreamfileoutput=newFileOutputStream("log.txt",true);Stringtemp=taMessage.getText();fileoutput.write(temp.getBytes());fileoutput.close();JOptionPane.showMessageDialog(null,"记录保管在log.txt");}catch(Exceptione){System.out.println(e);}}protectedvoidtiRen(){ti=list.getSelectedValue().toString();log("Ti:"+ti);}privatevoidlog(Stringstring){Stringnewta=taMessage.getText();newta+=("\n"+string);taMessage.setText(newta);}publicvoidactionPerformed(ActionEventevt){}publicstaticvoidmain(Stringargs[]){newServerFrame();}}publicclassConnectionextendsThread{/***与客户端通讯Socket*/privateSocketnetClient;/***在线用户列表*/privateVector<Customer>userOnline;/***聊天信息*/privateVector<Chat>userChat;/***从客户到服务器输入流*/privateObjectInputStreamfromClient;/***传到客户端打印流*/privatePrintStreamtoClient;/***注册用户列表*/privatestaticVectorvList=newVector();/***临时对象*/privateObjectobj;/***服务器日志窗体*/privateServerFramesFrame;@SuppressWarnings("unchecked")/***创建与客户端通讯*/publicConnection(ServerFrameframe,Socketclient,Vectoru,Vectorc){netClient=client;userOnline=u;userChat=c;sFrame=frame;try{fromClient=newObjectInputStream(netClient.getInputStream());toClient=newPrintStream(netClient.getOutputStream());}catch(IOExceptione){try{netClient.close();}catch(IOExceptione1){System.out.println("不克不及建立流"+e1);return;}}this.start();}/***处理与客户端的通讯线程*/publicvoidrun(){try{//obj是Object类的对象obj=(Object)fromClient.readObject();if(obj.getClass().getName().equals("Customer")){//serverLogin();serverLoginDB();}if(obj.getClass().getName().equals("Register_Customer")){//serverRegiste();serverRegisteDB();}if(obj.getClass().getName().equals("Message")){serverMessage();}if(obj.getClass().getName().equals("Chat")){serverChat();}if(obj.getClass().getName().equals("Exit")){serverExit();}}catch(IOExceptione){System.out.println(e);}catch(ClassNotFoundExceptione1){System.out.println("}finally{try{netClient.close();}catch(IOExceptione){System.out.println(e);}}}/****登录处理*/@SuppressWarnings("deprecation")publicvoidserverLogin(){try{CustomerclientMessage2=(Customer)obj;FileInputStreamfile3=newFileInputStream("user.txt");ObjectInputStreamobjInput1=newObjectInputStream(file3);vList=(Vector)objInput1.readObject();intfind=0;//查找判断标记//System.out.println(find);for(inti=0;i<vList.size();i++){Register_Customerreg=(Register_Customer)vList.elementAt(i);if(reg.custName.equals(clientMessage2.custName)){find=1;if(!reg.custPassword.equals(clientMessage2.custPassword)){toClient.println("密码不准确");break;}else{intlogin_flag=0;for(inta=0;a<userOnline.size();a++){String_custName=((Customer)userOnline.elementAt(a)).custName;if(clientMessage2.custName.equals(_custName)){login_flag=1;break;}}if(userOnline.size()>=50){toClient.println("登录人数过多,请稍候再试");break;}if(login_flag==0){clientMessage2.custHead=reg.head;//getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println("登录成功");Datet=newDate();log("用户"+clientMessage2.custNam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低空经济的社会接受度与伦理问题分析
- 机械手液压传动课程设计
- 机械手夹持器课程设计
- 机械工程液态化课程设计
- 2024年LED照明产品研发与技术服务合同
- 机械加工陶艺课程设计
- 低空经济市场发展趋势、机遇与挑战全景分析
- 机械制造连杆体课程设计
- 2024六年级语文下册 第三单元 交流平台与初试身手教案 新人教版
- 2015年辽宁省丹东市中考真题语文试题(解析版)
- 2024新信息科技七年级《第一单元 探寻互联网新世界》大单元整体教学设计2022课标
- 成语积累竞赛试题
- 2024焊接工艺规程
- 第六单元(整体教学设计)九年级语文上册大单元教学名师备课系列(统编版)
- DB1331T 080-2024 雄安新区零碳建筑技术标准
- 基于区块链的车联网安全研究综述
- 《8 课余生活真丰富》教学设计-2024-2025学年道德与法治一年级上册统编版
- 广州医学院攻读临床医学专业学位研究生培养方案
- 新生儿败血症-7
- 统编版(2024新版)道德与法治七年级上册4.1《家的意味》教案
- 经导管主动脉瓣置换术(TAVR)患者的麻醉管理
评论
0/150
提交评论