Java聊天室系统程序设计实验报告

上传人:小** 文档编号:26288553 上传时间:2021-08-08 格式:DOC 页数:24 大小:271.50KB
收藏 版权申诉 举报 下载
Java聊天室系统程序设计实验报告_第1页
第1页 / 共24页
Java聊天室系统程序设计实验报告_第2页
第2页 / 共24页
Java聊天室系统程序设计实验报告_第3页
第3页 / 共24页
资源描述:

《Java聊天室系统程序设计实验报告》由会员分享,可在线阅读,更多相关《Java聊天室系统程序设计实验报告(24页珍藏版)》请在装配图网上搜索。

1、Java聊天室系统程序设计实验报告完成时间:*完成时间:*目:*院(系):*年级专业:*学生姓名:*指导老师:*开始时间:*完成时间:*第一部分:课程设计总述课程设计目的:1. 学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java 程序开发的全过程。2. 进一步熟悉掌握 Java 程序设计语言的基础内容,如用户图形界面设计、 Java 多线程编程、 Applet 程序的设计、 文件和网络输入输出流编程、 Java 数据库编程等。3. 通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。 课程设计总体要求:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体

2、设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等) 。5. 设计小结(包括) 课程设计题目:目标本软件是一个实用聊天程序。项目要实现以下目标:1)允许用户注册;2)允许注册用户登录聊天室;3)登录用户之间进行聊天文件传输;4)用户可以更改背景音乐; 用户信息的保存本软件只是一个聊天室程序,所以用户只要打开程序就可以登录。本软件使 用文本文件或者数据库来保存用户数据。需求分析 对功能的规定第1 页 共69 页11.系统的用例图(对注册用户)2用户注册过程开始接受服务器ipd地址显示注册窗口接受用户名和密码 等用户信息判断用户是否 - 有

3、效noyes显示聊天室主界面将用户信息写入服务器端的文件结束第2页共69页23用户登录过程开始V接受服务器ipd地址显示用户登录窗口接受用户名和密码.yes*二 显示聊天室主界面对性能的规定由于本软件只是一个聊天室程序,程序只是提供用户之间的聊天和文件传输, 故对网络传输数据要求不是很高,只要正常的传输速度就可以了。需要管理的数据用户的信息如下:用户名,密码,头像,电子邮件,地址。4开发环境本软件米用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件 对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。总体设计思路系统主要包含两个 java文件,Se

4、rver.java 和UserLogin.java 图形界面主要通过orgnetbea nslibawtextra目录下的两个类:AbsoluteConstraints.class禾口 AbsoluteLayout.class来控制。启动系统通过依次点击批处理文件:1.bat,2.batServer.java 中包含:class UseroeriaLi宀 三=1言息p-blic class Server expends JFrarr.e.其中Server类又包括如下类和方法:putlic Server ()建立server=vrz-d 二m匸CcrEFunmutm ( ip-folic sta

5、tic vcid mairargs )/主函数(*class vcid st.art.Mer.-ItemAct-zrrr.ei Alllzevt 1启动事件21c. 5z 乙二E二二:-二二::二二二二三二二二亡 土壬e vcd 3tcpHeLtirActaGnF*fcrrrdevti磚止事件営兰二琴色匕兰-13 if上点tlmnu二匸芟己亡t =色兰兰亡严比色,二二=丄匕二三己匕二 旦犷匕:打公告事牛prn.vare void警吉事牛v/errLMer_i11er_.c11 亡亡二亡。二ir=:zl (二二匸二二二三丁巳二匸鎧人事泮prv=Ge void ah itMe nu I * eir

6、Ac匸丄二匸己rfc二直己已(盍匚匸二口珥三审住二匸 evt) 关于事件fprivate 暂口二日 helcHeZtirAct.ionPerfozir.ed (二匚匸二二二壬汀已二匸 eve 1 /Wat事守 pri/aLe 7O2.d elp?LJkCticr.Fsrf ermsd (AEi;rver:匸 svu)匸工二互七m vezd 三x二匸三工nr (;:二二:!二:.-三一丘二二三-”匸:i门退出事耳UserLogin .java 包括: clas5 CJser iir.plemencs Serializable F/甲士 這.邑愆Jz_ = 33 ILlecall皀二g匸二三垃二e

7、x二皀匸吐s 三x二三匸匸二二二定文异M矣p-jbl二u class UserLzcn exerLtls JFrame 联接服务器枣口类/其中UserLogin类又包括如下类和方法:pLiblLC j3=r7_ogri i iptlic static voidI) 主函数I4prizace void r StronXexsAcrLor.F亡二兰uzrr亡乱(益二匸二二 n三寸亡兀匸 eve 下一步茨钮事半privace void exitF口i:rr (亠岀巧也* ai舛匸仝y亡兀匸*口二::曰二诃三亡鳥匸 evt)退出按钮事件clasB UerLccr.LnlJz.r.dzw xt7razc

8、=二mr二二匸昌 B二二二互匕二皂登录窗口ITTprizace vcid imcCorr.pc*enc3() , T7t +2l1SI而UserLoginWindow类又包含如下事件和方法:第2页共69页6P erlis Userlcgz-Wz-ndow ()privi-ce void iritCoirjpcncnts ()韵-半丰丁二己乂void(L*t le*ct?iXaiEf r.z lencthFasaord)thrzws ZlleaLLergthExcepticr:private veld fouTLDOExiDicuinrFerforir.ed (Aotior.Ever:t evu

9、) 取消按锂事伴privit-s void Ccfoo3cxU3rXair*rirctLcrErferrr.d (*vt) /库户名下拉列恚事件private void exz-Fcmi (WindowEvent evr;) .;H总巳尊钮事牛public void ru() public void fafelLC vcid Updir.g () 列手J言皂public V2d Sy33erXe33age( i . V妥三一壬药il言童pfclis vcd Hessaje () 除受.天 1言.导Pjitlic vcid FileHessace () .-貝半乓迂:上湼zli33 IcrJiO

10、tcrlst&ner z_KpL=ir.=ntz 二二二二二二二二三二丘二注珊申请事件 class EnterActz_Qiil2_Bterr 二il君二廿-乞二匸吕 Ast.Lzr.L2_st-= =r . 宣、击申愴事= class ExitAcuicnListeer in:plen,ents ActioLi5e*er d三*肖事扌 -class EEg二m二乞工 xt.eds rair z.iEElmens 負匚七二匸11;二二m二亡二亡二注册向导窗口类class cJiacroair exueds JFrarr.e 壬天室主界回诜 claas mmiu 乞x二乞二Um CFrame u

11、rpleiEents AcionLs匸已已工尸工匸丘広二二m匸皀n己工音乐箕窗口 claas Sc-r.dlcader excenda Tradsli53 3cndl3t ex*ed.3 j a、rm -二二二二.三互三二匕日1?二皀 cl=53 option extends JFrair.e . 罗工T采弓二privite void ir.itCaTr,paent5 () 齐庚 2迢牛竟或系统为 C/S模式。首先根据功能模块将系统分为两部分:服务端(Server )和客户端(UserLogin )。然后构造可以序列化的User类,这是本系统的对象。根据需求功能细分类和方法。建立文件和网络的传

12、输通信。实现聊天室的基本功能具体设计 代码:/server.javaimport javax.swi ng.*;import java.awt.*; import java.awt.eve nt.*;import java .n et.*;import java.io.*; import java.util.*;/用户信息第2页共69页8class User implements SerializableString UserName;String UserPassword;String UserHeadPhoto;String UserEmail;String UserAge;String

13、SinkName;String FileName;byte FileData;String Message;String Command;Vector vectorUserList;public class Server extends JFramestatic Vector vectorStreamToUser=new Vector(1,1); static Vector vectorUserList=new Vector(1,1); private ServerSocket serverSocket;private JMenuItem aboutMenuItem;private JMenu

14、 commandMenu;private JMenu fileMenu;private JMenu helpMenu;private JMenuItem helpMenuItem;private JLabel jLabel1;private JLabel jLabel2;private JLabel jLabel3;private JLabel jLabel4;private JLabel jLabel5;private JList jList1;private JPanel jPanel1;private JScrollPane jScrollPane1;private JMenuItem

15、warnMenuItem;private JMenuItem kickMenuItem;private JMenuBar menuBar;private JMenuItem msgMenuItem;private JMenuItem startMenuItem;private JMenuItem stopMenuItem;/ 右键事件菜单private static JPopupMenu menu;private String BlackList;/ 建立 server 框架 public Server()initComponents();private void initComponents

16、() jPanel1 = new JPanel(); jLabel2 = new JLabel(); jLabel3 = new JLabel(); jLabel4 = new JLabel();jLabel5 = new JLabel();jScrollPane1 = new JScrollPane();jList1 = new JList(); jLabel1 = new JLabel();menuBar = new JMenuBar();fileMenu = new JMenu(); startMenuItem = new JMenuItem(); stopMenuItem = new

17、JMenuItem();commandMenu = new JMenu(); warnMenuItem = new JMenuItem(); kickMenuItem = new JMenuItem(); msgMenuItem = new JMenuItem();helpMenu = new JMenu(); helpMenuItem = new JMenuItem(); aboutMenuItem = new JMenuItem();getContentPane().setLayout(new beans.lib.awtextra.AbsoluteLayout();setTitle(Dao

18、Dao2009 服务器端 ); setResizable(false);/ 用户不能手动调整列宽度。addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) exitForm(evt););jPanel1.setLayout(new beans.lib.awtextra.AbsoluteLayout();try/ 建立 InetAddress 对象InetAddress intel=InetAddress.getLocalHost();String SerName=intel.getHost

19、Name();String SerIp=intel.getHostAddress();jLabel2.setText( 服务器名 :+SerName); / 显示服务器端主机名 jLabel3.setText( 服务器 IP:+SerIp); / 显示服务器端 IP catch(UnknownHostException e2)System.out.println( 发生错误 !);jLabel2.setForeground(new Color(255,0,0); jLabel2.setFont(new Font( 宋体 , 0, 14); jPanel1.add(jLabel2, new be

20、ans.lib.awtextra.AbsoluteConstraints(20,10, -1, -1);jLabel3.setForeground(new Color(255, 0, 0); jLabel3.setFont(new Font(宋体 , 0, 14);jPanel1.add(jLabel3,new beans.lib.awtextra.AbsoluteConstraints(20,30, -1, -1);jLabel4.setText( 服务器状态 : 未启动 ); jLabel4.setForeground(new Color(255, 255, 0); jLabel4.set

21、Font(new Font(宋体 , 0, 14);jPanel1.add(jLabel4,new beans.lib.awtextra.AbsoluteConstraints(20,240, -1, -1);jLabel5.setText( 共有 :0 个客户在线 ); jLabel5.setForeground(new Color(255, 255, 51); jLabel5.setFont(new Font(宋体 , 0, 14);jPanel1.add(jLabel5,new beans.lib.awtextra.AbsoluteConstraints(250,240, -1, -1)

22、;menu = new JPopupMenu(); / 右键事件菜单JMenuItem Admonition= new JMenuItem( 警告 );Admonition.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)用户认int state=JOptionPane.showOptionDialog(null, 确 实 要 警 告 +BlackList+ 吗 ? , 确 ,JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESS

23、AGE,null,null,null);if(state=JOptionPane.OK_OPTION)warnMenuItemActionPerformed(e););JMenuItem Delete = new JMenuItem(删除 );Delete.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)int state=JOptionPane.showOptionDialog(null, 确 实 要 删 除 用 户 +BlackList+ 吗 ? , 确 认 ,JOptionPa

24、ne.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);if(state=JOptionPane.OK_OPTION)kickMenuItemActionPerformed(e););menu.add(Admonition);menu.add(Delete);jList1.setModel(new AbstractListModel() String strings = ;public int getSize() return strings.length; public Object getElementAt(int

25、i) return stringsi; );jList1.setFont(new Font(Dialog,Font.BOLD | Font.ITALIC, 16); jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);jList1.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent evt)if (evt.getClickCount()=1)BlackList=(String)jList1.getSelectedValue();publ

26、ic void mouseReleased(MouseEvent evt)if (evt.isPopupTrigger()menu.show(evt.getComponent(), evt.getX(), evt.getY(););jScrollPane1.setViewportView(jList1);jPanel1.add(jScrollPane1, new beans.lib.awtextra.AbsoluteConstraints(20, 45, 362, 190);jLabel1.setIcon(new ImageIcon(imgServer.jpg);jPanel1.add(jLa

27、bel1, new beans.lib.awtextra.AbsoluteConstraints(0, -10, -1, -1);newgetContentPane().add(jPanel1, beans.lib.awtextra.AbsoluteConstraints(0, 0, 400, 270);menuBar.setBorder(null);menuBar.setBackground(new Color(0, 0, 0); fileMenu.setForeground(new Color(255, 255, 255); fileMenu.setText( 文件 );fileMenu.

28、setBackground(new Color(0, 0, 0); fileMenu.setFont(new Font(宋体 , 0, 14);startMenuItem.setForeground(new Color(255, 255, 255); startMenuItem.setFont(new Font(宋体 , 0, 14);startMenuItem.setText( 启动 ); startMenuItem.setBackground(new Color(0, 0, 0); startMenuItem.setBorder(null);startMenuItem.addActionL

29、istener(new ActionListener() public void actionPerformed(ActionEvent evt) startMenuItemActionPerformed(evt););fileMenu.add(startMenuItem);stopMenuItem.setForeground(new Color(255, 255, 255); stopMenuItem.setFont(new Font(宋体 , 0, 14);stopMenuItem.setText( 结束 ); stopMenuItem.setBackground(new Color(0,

30、 0, 0); stopMenuItem.setBorder(null);stopMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) stopMenuItemActionPerformed(evt););fileMenu.add(stopMenuItem);menuBar.add(fileMenu);commandMenu.setForeground(new Color(255, 255, 255); commandMenu.setText( 命令 );comm

31、andMenu.setBackground(new Color(0, 0, 0); commandMenu.setFont(new Font( 宋体 , 0, 14);msgMenuItem.setForeground(new Color(255, 255, 255); msgMenuItem.setFont(new Font( 宋体 , 0, 14); msgMenuItem.setText( 公告 );msgMenuItem.setBackground(new Color(0, 0, 0); msgMenuItem.setBorder(null);msgMenuItem.addAction

32、Listener(new ActionListener() public void actionPerformed(ActionEvent evt) msgMenuItemActionPerformed(evt););commandMenu.add(msgMenuItem);warnMenuItem.setForeground(new Color(255, 255, 255); warnMenuItem.setFont(new Font(宋体 , 0, 14);warnMenuItem.setText(警告 );warnMenuItem.setBackground(new Color(0, 0

33、, 0); warnMenuItem.setBorder(null);warnMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) warnMenuItemActionPerformed(evt););commandMenu.add(warnMenuItem);kickMenuItem.setForeground(new Color(255, 255, 255); kickMenuItem.setFont(new Font(宋体 , 0, 14);kickMenu

34、Item.setText(踢人 );kickMenuItem.setBackground(new Color(0, 0, 0); kickMenuItem.setBorder(null);kickMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) kickMenuItemActionPerformed(evt););commandMenu.add(kickMenuItem);menuBar.add(commandMenu);helpMenu.setForegro

35、und(new Color(255, 255, 255); helpMenu.setText(帮助 );helpMenu.setBackground(new Color(0, 0, 0); helpMenu.setFont(new Font(宋体 , 0, 14);helpMenu.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) helpMenuActionPerformed(evt););helpMenuItem.setForeground(new Color(255, 2

36、55, 255); helpMenuItem.setFont(new Font(宋体 , 0, 14);helpMenuItem.setText( 帮助主题 ); helpMenuItem.setBackground(new Color(0, 0, 0); helpMenuItem.setBorder(null); helpMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) helpMenuItemActionPerformed(evt););helpMenu.

37、add(helpMenuItem);aboutMenuItem.setForeground(new Color(255, 255, 255); aboutMenuItem.setFont(new Font( 宋体 , 0, 14); aboutMenuItem.setText( 关于 );aboutMenuItem.setBackground(new Color(0, 0, 0); aboutMenuItem.setBorder(null);aboutMenuItem.addActionListener(new ActionListener() public void actionPerfor

38、med(ActionEvent evt) aboutMenuItemActionPerformed(evt););helpMenu.add(aboutMenuItem);menuBar.add(helpMenu);setJMenuBar(menuBar);pack();public static void main(String args) / 主函数new Server().show();class connection extends Threadprivate User fromUserMessage=new User();private User toUserMessage=new U

39、ser();private Socket netUser;private ObjectInputStream streamFromUser;private ObjectOutputStream streamToUser;private boolean existName,existPassword;private String onlineNumber=Immovability;/判断在线人数的变化public connection(Socket UserSocket)netUser=UserSocket;newnewtry streamFromUser = ObjectInputStream

40、(netUser.getInputStream();streamToUser = ObjectOutputStream(netUser.getOutputStream(); catch(IOException e)try netUser.close();catch(IOException e1)System.out.print(Unable to set up stream+e1); return; this.start();public boolean validateName(String name)boolean validate;String recode,message;Random

41、AccessFile logfile; FileInputStream fsread;InputStreamReader inputread;BufferedReader bfread; validate=false;tryfsread=new FileInputStream(User.txt); inputread=new InputStreamReader(fsread);bfread=new BufferedReader(inputread); while(recode=bfread.readLine() != null)/ 验证用户信息 StringTokenizer st = new

42、 StringTokenizer(recode,:); while (st.hasMoreTokens() message=st.nextToken(); if(message.equals(name) validate=true; break;break; catch(FileNotFoundException e)System.out.println(The specified file does not exist); catch(IOException e)System.out.println(Error performing IO Operation);return validate

43、;public boolean validatePassword(String password)boolean validate;String recode,message; RandomAccessFile logfile;FileInputStream fsread;InputStreamReader inputread; BufferedReader bfread;validate=false;tryfsread=new FileInputStream(User.txt); inputread=new InputStreamReader(fsread);bfread=new Buffe

44、redReader(inputread); while(recode=bfread.readLine() != null)/验证用户信息StringTokenizer st = new StringTokenizer(recode,:); while (st.hasMoreTokens()message=st.nextToken(); message=st.nextToken();if(message.equals(password) validate=true; break;break; catch(FileNotFoundException e)System.out.println(The

45、 specified file does not exist); catch(IOException e)System.out.println(Error performing IO Operation);return validate;public void run()tryfor(;)String ButtonMessage; fromUserMessage=(User)streamFromUser.readObject();/ 读 用 户信息ButtonMessage=fromUserMessage.Command; / 读按 钮信息existName=validateName(from

46、UserMessage.UserName); / 验 证 用户名existPassword=validatePassword(fromUserMessage.UserPassword);/ 验证用户密码if(ButtonMessage.equals(Login)Login();if(ButtonMessage.equals(Enter)Enter();if(ButtonMessage.equals(Leave)Leave();if(!onlineNumber.equals(Immovability) Updating(fromUserMessage.UserName); if(ButtonMe

47、ssage.equals(PublicChat) | ButtonMessage.equals(PrivateChat)Message();if(ButtonMessage.equals(Request) | ButtonMessage.equals(FileCopy) toSinkMessage();if(ButtonMessage.equals(Agree) | ButtonMessage.equals(Refuse) | ButtonMessage.equals(Succeed) toUserMessage(); catch(IOException e) catch(ClassNotFo

48、undException e) trystreamFromUser.close(); streamToUser.close();netUser.close();catch(IOException e)public void Login()/ 注册请求处理tryif(existName) toUserMessage.Command=Repeat; streamToUser.writeObject(User)toUserMessage); / 返回操作 信息streamToUser.flush();else / 加入新用户信息 RandomAccessFile UserObj=new Random

49、AccessFile(User.txt,rw);UserObj.seek(UserObj.length();UserObj.writeBytes(fromUserMessage.UserName+:+fromUserMessage.UserPassword+fromUserMessage.UserHeadPhoto+:+fromUserMessage.UserEmail+:+fromUserMess age.UserAge+n);onlineNumber=add;toUserMessage.Command=Login; toUserMessage.UserName=fromUserMessag

50、e.UserName; toUserMessage.Message= 系 统 消 息 : 大 家 欢 迎+fromUserMessage.UserName+加入我们的 DaoDao聊天室! ! +n;Server.vectorUserList.addElement(fromUserMessage.UserName);/加入用户到用户在线列表toUserMessage.vectorUserList=Server.vectorUserList;streamToUser.writeObject(User)toUserMessage);/返回 用户在线列表和操作信息streamToUser.flush

51、(); Server.vectorStreamToUser.addElement(streamToUser);/存储该对象的输出流jLabel5.setText( 共 有 :+Server.vectorUserList.size()+个客户在线 );/ 服务器刷新jList1.setListData(Server.vectorUserList);catch(IOException e)public void Enter()/ 登陆请求处理tryif(existName & existPassword)onlineNumber=add;toUserMessage.Command=Enter;to

52、UserMessage.UserName=fromUserMessage.UserName;toUserMessage.Message= 系 统 消 息 : 大 家 欢 迎 +fromUserMessage.UserName+ 加入我们的欢乐聊天室! ! +n;Server.vectorUserList.addElement(fromUserMessage.UserName);/ 加入用户到用户在 线列表toUserMessage.vectorUserList=Server.vectorUserList;streamToUser.writeObject(User)toUserMessage);

53、/ 返回 用户 在线列表和操作信息streamToUser.flush();Server.vectorStreamToUser.addElement(streamToUser);/存储该对象的输出流jLabel5.setText( 共 有 :+Server.vectorUserList.size()+ 个 客户在线 );/ 服务器刷新jList1.setListData(Server.vectorUserList);elsetoUserMessage.Command=Error;streamToUser.writeObject(User)toUserMessage);/ 返回 操作 信息str

54、eamToUser.flush();catch(IOException e)public void Leave()/ 离开请求处理String name=fromUserMessage.UserName;Server.vectorStreamToUser.removeElementAt(Server.vectorUserList.indexOf(name);Server.vectorUserList.removeElement(name);onlineNumber=lessen;Updating(name);public void Updating(String name)/ 群发新用户登陆通

55、知 , 更新用户在线列表 和对像框tryif(onlineNumber.equals(add)User toUserMessage=new User();toUserMessage.Command=add; toUserMessage.UserName=name;toUserMessage.Message= 系统消息:大家欢迎 +name+ 加入我们 的欢乐聊天室! !+n;for(int i=1;iServer.vectorStreamToUser.size();i+)ObjectOutputStream newUserStream;newUserStream=(ObjectOutputSt

56、ream)Server.vectorStreamToUser.elementAt(i-1);newUserStream.writeObject(User)toUserMessage); newUserStream.flush();if(onlineNumber.equalsIgnoreCase(lessen)User toUserMessage=new User(); toUserMessage.Command=lessen;toUserMessage.UserName=name;toUserMessage.Message= 系统消息: +name+ 悄悄的走了! !+n;for(int i=

57、0;iServer.vectorStreamToUser.size();i+)ObjectOutputStream newUserStream;newUserStream=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);newUserStream.writeObject(User)toUserMessage); newUserStream.flush();jLabel5.setText( 共有 :+Server.vectorUserList.size()+ 个客户在线 );/ 服务器刷新jList1.setListData(

58、Server.vectorUserList);onlineNumber=Immovability;catch(IOException e)public void Message()/ 聊天信息发送User toUserMessage=new User();trytoUserMessage.Command=Message;toUserMessage.Message=fromUserMessage.Message;if(fromUserMessage.Command.equals(PublicChat)for(int i=0;iServer.vectorUserList.size();i+)if(

59、!(fromUserMessage.UserName.equals(Server.vectorUserList.elementAt(i)streamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i); streamToUser.writeObject(User)toUserMessage); streamToUser.flush();if(fromUserMessage.Command.equals(PrivateChat)for(int i=0;iServer.vectorUserList.size();i+)if(fromUserMessage.UserName.equals(Serve

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!