《Java课程设计聊天室(含代码).docx》由会员分享,可在线阅读,更多相关《Java课程设计聊天室(含代码).docx(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java 程序课程设计任务书JAVA 谈天室的系统的设计与开发1. 主要内容:用 JAVA 实现基于 C/S 模式的谈天室系统。谈天室分为效劳器端和客户端两局部, 效劳器端程序主要负责侦听客户端发来的信息,客户端需要登陆到效劳器端才可以实现正常的谈天功能。2. 具体要求包括技术要求等:系统的功能要求:A.效劳器端主要功能如下:1. 在特定端口上进展侦听,等待客户端连接。2. 用户可以配置效劳器端的侦听端口,默认端口为 8888。3. 向已经连接到效劳器端的用户发送系统消息。4. 统计在线人数。5. 当停顿效劳时,断开全部的用户连接。B.客户端的主要功能如下:1. 连接到已经开启谈天效劳的效劳器
2、端。2. 用户可以配置要连接的效劳器端的 IP 地址和端口号。3. 用户可以配置连接后显示的用户名。4. 当效劳器端开启的话,用户可以随时登录和注销。5. 用户可以向全部人或某一个人发送消息。学习并把握一下技术:JavaJavaBean等娴熟使用一下开发工具:Eclipse, JCreator 等实现系统上诉的功能。3. 进度安排:12 月 28 日 12 月 29 日:课程设计选题,查找参考资料12 月 30 日 1 月 1 日: 完成系统设计1 月 2 日1 月 5 日: 完成程序代码的编写1 月 6 日:系统测试与完善1 月 7 日:完成课程设计报告,预备辩论4. 主要参考文献:1.张广
3、彬 孟红蕊 张永宝.Java 课程设计案例精编 M.清华大学出版社.2023 年版IV摘要在网络越来更加达的今日,人们对网络的依靠越来越多,越来越离不开网络, 由此而产生的谈天工具越来越多,例如,国外的 ICQ、国内腾讯公司开发的 OICQ。基于 Java 网络编程的强大功能,本次毕业设计使用 Java 编写一个谈天系统。一般来说,谈天工具大多数由客户端程序和效劳器程序外加效劳器端用于存放客户数据的数据库组成,本系统承受客户机/效劳器架构模式通过 Java 供给的Soket 类来连接客户机和效劳器并使客户机和效劳器之间相互通信,由于谈天是多点对多点的而 Java 供给的多线程功能用多线程可完成
4、多点对多点的谈天,数据库治理系统用 SQL Server2023 完成并通过 JDBC-ODBC 桥访问数据库。本系统建立在 JAVA 平台上,系统的设计使用了面对对象技术和面对对象的设计原则。系统承受 C/S 构造,客户端与客户端以及客户端与效劳器端之间通过Socket 传送消息。使用 JAVA 语言编写,开发工具承受 Eclipse。效劳器端设计与实现过程中,承受了多线程技术,可以在单个程序当中同时运行多个不同的线程, 执行不同的任务。大大增加了程序对效劳器资源的利用。谈天系统完成后将可进展多人对多人的谈天,对好友进展添加、删除,对用户的注册,发送消息、承受消息等等功能。关键词:多线程 ;
5、客户机/效劳器 ;JAVA ; Socket ; Eclipse ; TCP/IP目 录JAVA 程序课程设计任务书I摘要II目 录III第 1 章 引言11.1 背景11.2 课程设计内容11.3 任务分工2第 2 章 谈天室系统32.1 谈天室系统概述32.1.1 谈天室系统的定义32.1.2 谈天室系统的任务及目的32.2 主要谈天室系统介绍42.3 本章小结5第 3 章 谈天室系统的设计63.1 系统需求分析63.2 系统开发及运行环境63.3 系统主要功能要求63.4 系统模块化分析73.4.1 谈天室系统总体构造73.4.2 谈天室系统各模块介绍83.5 系统数据流图103.6 本
6、章小结10第 4 章 系统的具体实现114.1 界面设计114.1.1 效劳器启动界面图114.1.2 效劳器启动成功界面图124.1.3 客户端界面图124.1.4 用户设置界面图134.1.5 用户成功登录界面图134.1.6 两人私聊界面图144.1.7 多人群聊界面图144.2 程序设计及调试运行144.2.1 程序调试以效劳器为例154.2.2 JCreator204.3 本章小结21第 5 章 完毕语22致谢23附录 源代码24第 1 章 引言1.1 背景当今主流的谈天工具有 QQ,ICQ,MSN Messenger,Yahoo Messenger 等,国内最热门的当属 QQ,腾讯
7、 QQOICQ是由深圳市腾讯计算机系统公司开发的,基于 Internet 的即时寻呼软件。您可以使用 QQ 和好友用户进展沟通,信息即时发送,即时回复,收发准时、功能全面。此外 QQ 还具有 BP 机网上寻呼、谈天室、 传输文件、语音邮件、手机短讯效劳等功能,QQ 不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM 移动 的短消息系统互联,目前 QQ 和全国多家寻呼台、移动通信公司有业务合作。是国内不行多得的中文网络寻呼机。QQ 支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。 QQ 可以在Win95/98/NT/2023 操作系统下运行,是格外灵敏的网络寻呼工具。它会
8、自动检查您是否已联网,假设您的电脑已连入 Internet,可以搜寻网友、显示在线网友, 可以依据 QQ 号、昵称、姓名、email 地址等关键词来查找,找到后可参与到通讯录中。当您的通讯录中的网友在线时,QQ 中朋友的头像就会显示在线,依据提示就可以发送信息,假设对方登记了寻呼机或开通了 GSM 手机短消息,即使离线了, 您也可准时将信息传递给您的好友。虽然以上这些软件是免费的,并且功能越来越强大。但是它们的唯一的缺乏就是必需要联网或者下载到它们的效劳端,要不然是没法脱离 Intenet 使用的。为了能在一个没有连接到 Intenet 的局域网使用谈天工具,那就必需要有效劳器端。本系统就是包
9、括效劳器端与客户端,可以在局域网谈天的一个工具。1.2 课程设计内容实现的是局域网中的谈天功能,运行效劳程序后,效劳器创立成功, 然后使效劳器对某一个设定的端口处于监听状态,当有客户端恳求建立连接时,效劳器就可承受恳求,建立连接!这样效劳器和客户端就可相互发送消3息,实现谈天功能! 系统的功能要求:A.效劳器端主要功能如下:1. 在特定端口上进展侦听,等待客户端连接。2. 用户可以配置效劳器端的侦听端口,默认端口为 8888。3. 向已经连接到效劳器端的用户发送系统消息。4. 统计在线人数。5. 当停顿效劳时,断开全部的用户连接。B.客户端的主要功能如下:1. 连接到已经开启谈天效劳的效劳器端
10、。2. 用户可以配置要连接的效劳器端的 IP 地址和端口号。3. 用户可以配置连接后显示的用户名。4. 当效劳器端开启的话,用户可以随时登录和注销。5. 用户可以向全部人或某一个人发送消息1.3 任务分工第 2 章 谈天室系统2.1 谈天室系统概述谈天室是一种基于互联网的即时沟通系统,最初是 ICQ,也称网络寻呼机。此类软件使得人们可以运用连上 INTERNET 网的电脑用户可以随时跟另外一个在线网民交谈,甚至可以通过视频看到对方的适时图像。使人们不必担忧昂贵的话费而畅快沟通,并工作、沟通两不误。2.1.1 谈天室系统的定义谈天时系统是通过即时通讯技术来实现在线谈天、沟通的软件。目前有 2 种
11、架构形式,1、一种是 C/S 架构,承受客户端/效劳器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、百度 HI 、SkypeQQ VS GU、Gtalk、浪 UC、MSN 等;2、承受 B/S 架构,即扫瞄器/效劳端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验效劳器端进展沟通对话, 一般运用在电子商务网站的效劳商, 典型的代表有Websitelive 、53KF、live800 等。2.1.2 谈天室系统的任务及目的本系统主要通过客户端,效劳器端来表达谈天系统的根本功能。1效劳器端1. 处理用户注册2. 处理用户登录3. 处理用户发送
12、信息,效劳器监控谈天内容,效劳器过滤非法内容4. 处理用户得到信息5. 处理用户退出8. 效劳器踢人。9. 保存效劳器日志。10.保存用户谈天信息。(2) 客户端1. 用户注册界面及结果2. 用户登录界面及结果3. 用户发送信息界面及结果4. 用户得到信息界面及结果5. 用户退出界面及结果2.2 主要谈天室系统介绍目前国内外做谈天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、浪 UC、网易泡泡等,国外有著名的 MSN版改名为 Live Messenger以及跨平台 Gaim 等。本人取最具代表性的 QQ 和 MSN 进展了一些争论,作为我开发谈天系统的预备。腾讯无疑是国内即时通讯市场的霸
13、主,自从 99 年进入即时通讯领域并快速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软 MSN 的强大攻势,腾讯 QQ 的时常占有率照旧稳步增长。腾讯的成功与其对 QQ 的不断创和完善是分不开的。参考了很多网络上的资料,以及自己通过观看腾讯 QQ 运行时的各种细节。可以确定腾讯 QQ 是以多效劳器供给效劳、效劳器总控客户端、客户端之间UDP 直连通信的。并且在两个客户端之间不能建立直连的状况下,才由效劳器进展中转通信。其模型如图 1-1图 1-1腾讯 QQ 效劳器-客户端模型 1与腾讯 QQ 不同,微软的 MSN Messenger 只使用了 TCP 作为传输层通信协议,全部客户
14、端与效劳器进展连接,然后通过与效劳器的 TCP 连接进展中转通信。其模型如图 1-24图 1-2MSN 效劳器-客户端模型 2腾讯使用的模型中,效劳器主要处理客户端各种状态的把握,可以极大减轻效劳器的处理压力,但其内部协议和实现简洁度都较高。而MSN Messenger 全部数据都要经过效劳器,效劳器压力可想而知难怪寻常很少见到使用 MSN 进展语音视频谈天的。2.3 本章小结这一章介绍了当前谈天室系统应当具备的功能模块,并供给了市面上比较流行的谈天室系统作为参考。在这一章中,我们可以了解什么是谈天室系统,当前谈天室系统的市场需求,还有一个谈天室系统应当的开发目标。5第 3 章 谈天室系统的设
15、计这一章是谈天室系统的设计,从系统需求分析开头,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。3.1 系统需求分析谈天室的设计目标:通过做稳固所学 Java 语言根本学问,增进 Java 语言编辑根本功,把握 JDK、JCreator 等开发工具的运用,拓宽常用类库的应用,用 JAVA 实现基于 C/S 模式的谈天室系统。3.2 系统开发及运行环境硬件平台:q CPU:Pentium 2.8GHz 以上。q 内存:256MB 以上。软件平台:q 操作系统:WindowsXP。q 运行环境:JDK Version1.6JCreator。3.3 系统主要功能要求本系统针对局域
16、网进展联机谈天。谈天室分为效劳器端和客户端两局部,效劳器端程序主要负责侦听客户端发来的信息,客户端需要登陆到效劳器端才可以实现正常的谈天功能。本系统主要实现如下功能:效劳器:q 在特定端口上进展侦听,等待客户端连接。q 用户可以配置效劳器端的侦听端口,默认端口为 8888。q 向已经连接到效劳器端的用户发送系统消息。q 统计在线人数。q 当停顿效劳时,断开全部的用户连接。q 系统运行稳定、安全牢靠。6客户端q 一台主机只能启动一个效劳器。客户端:q 连接到已经开启谈天效劳的效劳器端。q 用户可以配置要连接的效劳器端的 IP 地址和端口号。q 用户可以配置连接后显示的用户名。q 用户可以更改谈天
17、时的表情。q 当效劳器端开启后,用户可以随时登录和注销。q 用户可以向全部人或某一个人发送消息。q 系统运行稳定、安全牢靠。q 可以默认连接到自己主机启动的效劳器。3.4 系统模块化分析3.4.1 谈天室系统总体构造效劳器主要功能框架如以以下图所示:端启系停退口动统止设服消服置务息务出用连登发注退户接送设设消置置录息销出各功能模块实现的功能为: 效劳器:端口设置:设置倾听的端口号,默认为 8888。启动效劳:开启倾听端口,允许客户端连接。系统消息:效劳器启动后可以在谈天室内发送消息。停顿效劳:关闭倾听端口,中断全部客户端的连接。退出:关闭效劳器。客户端:用户设置:设置谈天时显示的名称,默认为匆
18、忙过客。连接设置:设置要连接的效劳器所在主机的 IP 地址和倾听端口。登录:连接效劳器。发送消息:进展谈天,可单独发送消息给谈天室中的一个人。注销:与效劳器断开连接。退出:关闭客户端。3.4.2 谈天室系统各模块介绍效劳器包含效劳、帮助、谈天三大模块,其中效劳模块包含端口设置、启动效劳、停顿效劳和退出四个小模块谈天模块可以向谈天室内全部人或个人发送系统消息或以治理员身份与其他人谈天序号模块名1 端口设置2 启动效劳表 3-1 效劳器各模块名称功能汇总表根本功能设置倾听的端口号,默认为 8888。开启倾听端口,允许客户端连接。83停顿效劳关闭倾听端口,中断全部客户端的连接。4退出关闭效劳器。5帮
19、助显示各个模块的功能及操作方法。6发送向谈天室内发送系统消息。客户端包含操作、设置、帮助、谈天四大模块,其中操作包含用户登录、用户注销和退出三个小模块,设置包含用户设置和连接设置两个小模块谈天模块除 具备一般谈天功能外,还能进展谈天时的表情选择表 3-2 客户端各模块名称功能汇总表序号模块名根本功能1用户设置设置谈天时显示的名称,默认为匆忙过客。2连接设置设置要连接的效劳器所在主机的 IP 地址和倾听端口。3用户登录连接到效劳器端。4用户注销与效劳器断开连接。5退出关闭客户端。6发送发送谈天内容7静静话谈天内容不会被效劳器和说话对象以外的人看到93.5 系统数据流图客户端 B客户端 C客户端
20、A静静话效劳器客户端 E客户端 D系统数据流图3.6 本章小结本章是谈天室系统的具体设计过程,有具体的需求分析、系统功能模块、系统数据流图。这里我们开头接触谈天室系统开发的最初步骤,也是很重要的一步。10第 4 章 系统的具体实现界面是系统之间最直接的交互界面,界面的友好性表达了软件设计的质量, 并在很大程度上打算了软件是否成功。4.1 界面设计4.1.1 效劳器启动界面图114.1.2 效劳器启动成功界面图4.1.3 客户端界面图124.1.4 用户设置界面图4.1.5 用户成功登录界面图134.1.6 两人私聊界面图4.1.7 多人群聊界面图4.2 程序设计及调试运行利用 JCreator
21、“一次编写,各处运行”的编程优点,按功能模块构造设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进展编译连接运行,经过反复调试修改,以到达系统功能要求。这个过程具有大量的工作量,应认真对每个程序细节进展分析思考、编写程序并调试,做到程序简洁清楚,尽量避开可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。144.2.1 程序调试以效劳器为例import java.awt.*; import java.awt.event.*; import javax.swing.*;import javax.swing.event.*; import .*;import java.io
22、.*;/* 谈天效劳端的主框架类*/public class ChatServer extends JFrame implements ActionListener public static int port = 8888;/效劳端的侦听端口ServerSocket serverSocket;/效劳端 Socket Image icon;/程序图标JComboBox combobox;/选择发送消息的承受者JTextArea messageShow;/效劳端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JTextField showStatus;/显
23、示用户连接状态JLabel sendToLabel,messageLabel; JTextField sysMessage;/效劳端消息的发送JButton sysMessageButton;/效劳端消息的发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar;/建立菜单组JMenu serviceMenu = new JMenu (“效劳(V)“);/建立菜单项JMenuItem portItem = new JMenuItem (“端口设置(P)“); JMenuItem startItem = n
24、ew JMenuItem (“启动效劳(S)“); JMenuItem stopItem=new JMenuItem (“停顿效劳(T)“); JMenuItem exitItem=new JMenuItem (“退出(X)“);JMenu helpMenu=new JMenu (“帮助(H)“); JMenuItem helpItem=new JMenuItem (“帮助(H)“);/建立工具栏JToolBar toolBar = new JToolBar;/建立工具栏中的按钮组件 JButton portSet;/启动效劳端侦听JButton startServer;/启动效劳端侦听JBu
25、tton stopServer;/关闭效劳端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400, 600); ServerListen listenThread;JPanel downPanel ; GridBagLayout girdBag;24GridBagConstraints girdBagCon;/* 效劳端构造函数*/public ChatServer init;/初始化程序/添加框架的关闭大事处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
26、SE); this.pack;/设置框架的大小this.setSize(faceSize);/设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit.getScreenSize; this.setLocation( (int) (screenSize.width - faceSize.getWidth) / 2,(int) (screenSize.height - faceSize.getHeight) / 2); this.setResizable(false);this.setTitle(“谈天室效劳端“); /设置标题/程序图
27、标icon = getImage(“icon.gif“); this.setIconImage(icon); /设置程序图标show;/为效劳菜单栏设置热键”V” serviceMenu.setMnemonic(”V”);/为端口设置快捷键为ctrl+p portItem.setMnemonic (”P”);portItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK);/为启动效劳快捷键为ctrl+s startItem.setMnemonic (”S”);startItem.setAcc
28、elerator(KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK);/为端口设置快捷键为ctrl+T stopItem.setMnemonic (”T”);stopItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_T,InputEvent.CTRL_MASK);/为退出设置快捷键为ctrl+x exitItem.setMnemonic (”X”);exitItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK
29、_X,InputEvent.CTRL_MASK);/为帮助菜单栏设置热键”H” helpMenu.setMnemonic(”H”);/为帮助设置快捷键为ctrl+p helpItem.setMnemonic (”H”);helpItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK);/* 程序初始化函数*/public void initContainer contentPane = getContentPane; contentPane.setLayout(new BorderLayout
30、);/添加菜单栏 serviceMenu.add (portItem);serviceMenu.add (startItem); serviceMenu.add (stopItem); serviceMenu.add (exitItem); jMenuBar.add (serviceMenu); helpMenu.add (helpItem); jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按钮portSet = new JButton(“端口设置“); startServer = new JButton(“启动效劳“); stopSe
31、rver = new JButton(“停顿效劳“ ); exitButton = new JButton(“退出“ );/将按钮添加到工具栏toolBar.add(portSet); toolBar.addSeparator;/添加分隔栏toolBar.add(startServer); toolBar.add(stopServer); toolBar.addSeparator;/添加分隔栏toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);/初始时,令停顿效劳按钮不行用stopServer.setEnabl
32、ed(false); stopItem .setEnabled(false);/为菜单栏添加大事监听portItem.addActionListener(this); startItem.addActionListener(this); stopItem.addActionListener(this); exitItem.addActionListener(this); helpItem.addActionListener(this);/添加按钮的大事侦听portSet.addActionListener(this); startServer.addActionListener(this);
33、stopServer.addActionListener(this); exitButton.addActionListener(this); combobox = new JComboBox; combobox.insertItemAt(“全部人“,0); combobox.setSelectedIndex(0); messageShow = new JTextArea; messageShow.setEditable(false);/添加滚动条messageScrollPane = new JScrollPane(messageShow, JScrollPane.VERTICAL_SCRO
34、LLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400); messageScrollPane.revalidate;showStatus = new JTextField(35); showStatus.setEditable(false); sysMessage = new JTextField(24); sysMessage.setEnabled(false); sysMessageButton = new J
35、Button; sysMessageButton.setText(“发送“);/添加系统消息的大事侦听sysMessage.addActionListener(this); sysMessageButton.addActionListener(this); sendToLabel = new JLabel(“发送至:“); messageLabel = new JLabel(“发送消息:“); downPanel = new JPanel;girdBag = new GridBagLayout; downPanel.setLayout(girdBag); girdBagCon = new Gr
36、idBagConstraints; girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel(“); girdBag.setConstraints(none,girdBagCon); downPanel.add(none);girdBagCon = new GridBagConstraints; girdBagCon.gridx = 0
37、;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0); girdBagCon.ipadx = 5;girdBagCon.ipady = 5; girdBag.setConstraints(sendToLabel,girdBagCon); downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints; girdBagCon.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LI
38、NE_START; girdBag.setConstraints(combobox,girdBagCon); downPanel.add(combobox);girdBagCon = new GridBagConstraints; girdBagCon.gridx = 0;girdBagCon.gridy = 3; girdBag.setConstraints(messageLabel,girdBagCon); downPanel.add(messageLabel);girdBagCon = new GridBagConstraints; girdBagCon.gridx = 1;girdBa
39、gCon.gridy = 3; girdBag.setConstraints(sysMessage,girdBagCon); downPanel.add(sysMessage);girdBagCon = new GridBagConstraints; girdBagCon.gridx = 2;girdBagCon.gridy = 3; girdBag.setConstraints(sysMessageButton,girdBagCon); downPanel.add(sysMessageButton);girdBagCon = new GridBagConstraints; girdBagCo
40、n.gridx = 0;girdBagCon.gridy = 4;girdBagCon.gridwidth = 3; girdBag.setConstraints(showStatus,girdBagCon); downPanel.add(showStatus); contentPane.add(messageScrollPane,BorderLayout.CENTER); contentPane.add(downPanel,BorderLayout.SOUTH);/关闭程序时的操作this.addWindowListener(new WindowAdapterpublic void wind
41、owClosing(WindowEvent e) stopService;System.exit(0););/* 大事处理*/public void actionPerformed(ActionEvent e) Object obj = e.getSource;if (obj = startServer | obj = startItem) /启动效劳端startService;else if (obj = stopServer | obj = stopItem) /停顿效劳端int j=JOptionPane.showConfirmDialog(this,“真的停顿效劳吗?“,“停顿效劳“,
42、 JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION) stopService;else if (obj = portSet | obj = portItem) /端口设置/调出端口设置的对话框PortConf portConf = new PortConf(this); portConf.show;else if (obj = exitButton | obj = exitItem) /退出程序int j=JOptionPane.showConfirmDialog(this,“
43、真的要退出吗?“,“退出“, JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION) stopService; System.exit(0);else if (obj = helpItem) /菜单栏中的帮助/调出帮助对话框Help helpDialog = new Help(this); helpDialog.show;else if (obj = sysMessage | obj = sysMessageButton) /发送系统消息sendSystemMessage;/* 启动效劳端*/public void startService tryserverSocket = new ServerSocket(port,10); messageShow.append(“效劳端已经启动,在“+port+“端口侦听.n“); startServer.setEnabled(false);startItem.setEnabled(false); portSet.setEnabled(fa