基于java套接字的实现多点互动通讯系统内容摘要:
检查用户的输入数据,显示应用的输出数据。 为了使用户能直接地进行操作,客户层需要使用图形用户接口。 [6]若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。 服务层又叫做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。 例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录 后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。 在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。 图 1 二层 C/S 结构示意图 功能设计 该多点互动通讯按如下过程完成通讯: (1)用户向服务器注册; (2)用户注册之后,向服务器发送消息; (3)服务器再把消息发送给相应的用户。 根据以上描述,该系统功能模块图如图 2 所示 图 2 多点互动通讯功能模块图 服务器端功能设计 在服务器端的 程序具有以下的功能实现: (1)开启服务器程序,进行监听,接收客户端连接。 (2)接收消息、分析消息、转发消息。 (3)关闭服务器端的程序,并向所有已连客户端发送服务器端程序已关闭消息。 客户端功能设计 在客户端的程序必须具有以下的功能实现: (1)用户注册。 (2)请求连接服务器,并把此用户登录请求发给服务器端。 (3)随时可以向服务器发送消息。 (4)随时可以接收服务器端转发过来的消息。 (5)响应服务器端程序已关闭消息。 界面设计 服务器端功能设计 在服务 器端的界面设计实现:有两个按钮,分别是开启服务和停止服务,把这两个按钮放入一个面板中,然后把此面板放入到窗体中。 此界面能实现服务器端的服务开启和停止的功能。 客户器界面设计 在客户端设计了五个界面:登入界面、注册界面、好友界面、聊天界面、修改密码界面。 (1)登录界面设计实现:在登录界面中有两个输入框,能实现用户账号和密码的输入,并且密码输入是不可见的。 还有三个按钮:登录、取消、注册向导。 (2)注册界面设计实现:当点击登录界面登录按钮时,进入注册界面。 注册界面能实现用户输入申请的账号,设置 密码。 还设计有注册和返回按钮来方便使用者的操作。 (3)好友界面设计实现:登录成功后,进入好友界面。 好友界面有:我的好友、陌生人、黑名单三个按钮。 当点击我的好友时,能实现我的好友列表,当点击陌生人时,能实现陌生人列表。 (4)聊天界面设计实现:当双击列表中某好友时,跳出与此好友聊天的界面。 聊天界面包括:聊天内容显示、输入聊天信息、发送聊天信息。 (5)修改密码界面设计实现:当在登录界面点击修改密码时,进入修改密码界面。 修改密码界面能实现输入账号、原有密码和需要修改的密码。 还设计有修改密码和返回按钮来方 便使用者的操作。 6详细设计 服务器端详细设计 界面设计 在 java 程序中,我们可以通过自己编写的类继承 JFrame 类的方法实现要创建的窗体。 当我们用到 JFrame 类,我们需要导入 .*和 .*。 我们要在窗体内加入一个装有控制按钮的面板 (JPanel)。 关键代码如下: jPanel_show=new JPanel()。 jButton_start=new JButton(。 启动服务器。 )。 (this)。 jButton_stop=new JButton(。 关闭服务器。 )。 (this)。 (jButton_start)。 (jButton_stop)。 (jPanel_show)。 功能模块的实现 本系统在 C/S 模式下进行开发,所以服务器端的程序设计至关重要。 下面就服务器端功能进行设计。 服务器端界面有 两个按钮,分别是 jButton_start 和 jButton_stop。 当点击 jButton_start 时,跳出是否开启服务器的对话框。 点击确定时显示服务器启动对话框,服务器启动后通过 ServerSocket Serve_socket =new ServerSocket(9898)语句在服务器 9898 端口进行监听操作。 监听通过()语句返回一个连接客户端的 Socket。 关键代码如下: Serve_socket = new ServerSocket()。 //有连接则返回此套接字的连接 . socket=()。 接收到客户端 User 后判断为登录操作时,则通过 UserDao 类中的()方法判断 MYSQL 数据库中是否有此用户,有则把 Message 的类型设为 ,然后通过 ()把此消息发给客户端,并用 new SerConClientThread(socket)为此用户开一个服务器端的线程为此用户服务,并加入到服务器线程类里面 去, SerConClientThread 类可以实 现 用 户 消 息 接 收 、 消 息 分 析 、 消 息 转 发 , 通 过(())通知其它在线好友此用户上线。 没有则把 Message 的 类 型 设 为 , 然 后 通 过()把此消息发给客户端,并且关闭此 Socket。 关键代码如下: if(().equals(。 userLogin。 )) { if(().equals((()))) { //return Login suceess ()。 //返回给用户一个登入成功的消息 (m)。 //这里就单开一个线程,让该线程与该客户端保持通信 . SerConClientThread Serve_thread=new SerConClientThread(socket)。 ((), Serve_thread)。 //启动与该客户端通信的线程 . ()。 // notify Other who online (())。 } else { //表明 Fail Login ()。 (m)。 //关闭 Socket ()。 } } 接收到客户端 User 后判断为注册标志时,则得到用户要注册的用户账号,通过 ()方法查找 MYSQL 数据库中是否有此用户账号,有则把Massage 的类型设为注册不成功标志。 通过 ()把此消息发给客户端,发完后关闭在服务器端的此用户连接的 Socket;没有则在服务器端 User表中加入此用户,然后把 Massage 的类型设为注册 成功标志,通过()把此消息发给客户端,发完后关闭在服务器端的此用户连接的 Socket。 关键代码如下: if(().equals(。 userRegister。 )) { if(((), (), ())) { (。 registerSuccess。 )。 } else (。 registerFail。 )。 (m)。 //写入消息 ()。 }。基于java套接字的实现多点互动通讯系统
相关推荐
seAdapter() { public void mouseClicked(MouseEvent e){ if(()==1){ JLabel facelabel = (JLabel)(())。 (())。 } 9 } })。 (jl[i])。 } 图 5 5 聊天窗口界面 服务器端界面 服务端仅是用来开启 Socket,界面并没有什么太多的功能,只是两个按钮而已,在这里就不做过多的介绍了。
系统升级:当企业内部通讯系统有更新的版本时,可以使用该功能进行软件升级。 系统设置:系统设置功能可以设置企业内部通讯系统的用户界面,公共路径等等,还可以设置公告的存放路径。 用于提示职工企业的公告信息。 用户搜索:在企业内部通讯系统第一次运行的时候,用户列表是空的,这时可以使用用户搜索功能搜索局域网内的所 有用户。 8 访问公共资源:该功能可以访问企业内部共用的一个公共得服务器上的资源
③图像浏览区 ①操作区 ④图像窗口 8 面的外观风格的切换,只能有一种外观风格被选择,因此使用 JRadioButtonMenuItem 和ButtonGroup。 操作区内另有工具栏, 使用 JToolBar,为了让工具栏能更好地被拖出和放回原位,而不影响界面的布局,使用自定义的类 JToolBarPanel,该类是 JPanel 的子类,并实现了ContainerListener 接口
成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 如雅虎、阿尔卡特 — 朗讯、 Google公司、诺基亚公司、百度等公司就采用Java Web 应用开发 —— 在线模拟考试系统的设计与实现 3 了 MySQL数据库。 MySQL数据库可以称得上是目前运行速度最快的 SQL语言数据库。 除了具有许多其它数据库所不具备的功能和选择之外
~100 的局域网环境中,两层模型的确是个不错的方案。 由于该模型中,所有的用户连接都是被保持的,也就是说即使在空闲状态,连接依然存在。 所以,用户的并发请求数量有限的。 为了解决这个限制,使得成千上万的用户可以被无 顾虑地添加,我们最好选用三层模型。 B/S 结构,即 Browser/Server(浏览器 /服务器)结构,是随着 Inter 技术的兴起,对C/S
nate 执行 SQL 语句或者 HQL 语句,插入或者查询信息,submit,然后返回给前台。 SSH2 典型的 J2EE 三层结构,分为表现层、中间层 (业务逻辑层 )和数据服务层。 三层体系结构将业务规则、数据访问及合法性校验等工作放在中间层处理。 客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。 表现层是 JSP 技术,中间层采用的是流行的 Struts