基于socket的多客户端网络聊天系统的开发与设计-53页内容摘要:
图 3 系统实体及其属性 表 1 用户表 user 属性名 数据类型 字段说明 备注 Id int(6) ID 主键(自动增一) name varchar(10) 用户名 非空 password varchar(10) 用户密码 非空 age int(3) 年龄 sex sex char(2) 性别 简易 聊天工具系统的总体设计要点 本 简易 聊天工具系统的设计与其他普通聊天软件的设计有着很多的不同地方,普通聊天软件的设计有很多要考虑的因素,例如,普通聊天软件需要对程序的图形窗口以及布局进行了大量美化工作,而 简易 聊天工具只是满足的用户的基本的聊天需求。 因此,在设计 简易 聊天工具系统的过程中,以下几个设计要点是必须要考虑的重点: 实现思想 在网络上的聊天工具一般都是服务器提供的连接响应。 用户以客户端为平台连接到服务器,那么用户在同一服务器上就可以聊天了。 因此需要实现客户端与服务器端的功能。 服务器端工作流程 莆田 学院 2020 届本科毕业论文 13 客户端发送请求连接,用户登录,然后进行审核,审核通过后则表示用户成功登录;然后就可以接受客户端发送的信息,再根据需要进行信息的处理;将信息传递至将要传递的客户端。 客户端工作流程 客户端程序 与服务器 端程序相比就 简单 了 , 客户端需要 与服务器端 成功的 连接, 然后寻找相同的 Socket, 通过这个 Socket 来发送和接收数据就可以了。 3 .3 简易 聊天工具系统的设计步骤及功能模块划分 聊天系统工作原理图如下: 图 6 工作原理图 基于 Socket的 简易 网络聊天系统的开发与设计 14 简易 聊天工具系统各功能模块 服务器端功能: 服 务 器 端启动与停止服务查看在线用户详细信息修改学校信息部门信息维护用户信息维护发送信息 图 7 服务器功能 服务器端的主要功能包括:启动服务、停止服务、在线用户详细信息的查看、发送接受到的客户端信息、修改学校信息、部门信息的维护、用户信息的维护。 客户端功能划分为以下模块: 客 户 端客户端的连接与断开更新用户信息查看同学信息聊天内容的保存打开聊天内容的删除发送消息 图 8 客户端功能 客户端的主要功能包括:客户端的连接与断开、更新用户信息、发送消息、查看同学信莆田 学院 2020 届本科毕业论文 15 息、聊天内容的打开保存删除 登录模块 流程图如下 开 始填 写 用 户信 息验 证 用 户 信 息验 证 用 户结 束接 收 离 线信 息成 功失 败发 送 登 陆失 败 信 息 图 9 登录流程图 输入: 管理员账号或者用户帐号和对应的密码。 处理: 检索该用户名是否存在于数据库中,若能检索到,那就在数据库中查找该用户名对应的密码是否正确,再根据用户的权限 进入相应的业务范围和正常的流程, 输出: 相应权限的页面。 登录模块主要代码: package qq_client_jframe。 import。 import。 import。 import。 基于 Socket的 简易 网络聊天系统的开发与设计 16 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 import。 莆田 学院 2020 届本科毕业论文 17 import。 import。 import。 import。 import。 import。 import。 import。 /** * 这是一个 登录窗体类,它继承自 * @author Devon * */ public class _Login_JFrame extends JFrame{ private JComboBox boBox_ID = new JComboBox()。 private JPasswordField passwordField_Password = new JPasswordField(123456)。 private JPanel panel_NetOption = null。 private JLabel label_NetOption = new JLabel()。 private JButton button_NetOption = new JButton(设 置 )。 基于 Socket的 简易 网络聊天系统的开发与设计 18 private JButton button_Add = new JButton(注册 )。 private JButton button_Login = new JButton(登 录 )。 private JButton button_Exit = new JButton(退 出 )。 private File file = new File(id/)。 private JComboBox boBox_IP = new JComboBox(new String[]{})。 private JTextField textField_Port = new JTextField(6000)。 private user_add_JDialog user_add_JDialog = null。 private ObjectOutputStream objectOutputStream = null。 private ObjectInputStream objectInputStream = null。 private String ID = null。 private String name_ID = null。 /** * 构造一个登录窗体 */ public _Login_JFrame() { super( 用户登录 )。 //初始化 号码框 , 莆田 学院 2020 届本科毕业论文 19 launchComboBox_ID()。 = ()。 (false)。 ()。 (false)。 ()。 ()。 (null)。 (true)。 } /** * 生成一个显示在登录窗体上的有图片的 JLable * @return 显示在登录窗体上的有图片的 JLable */ private JLabel makeLoginImage(){ Icon i = new ImageIcon(image/)。 JLabel l = new JLabel(i)。 return l。 } 基于 Socket的 简易 网络聊天系统的开发与设计 20 /** * 生成一个登录区域的 JPanel * @return 一个登录区域的 JPanel */ private JPanel makeLoginArea(){ JPanel p = new JPanel()。 BoxLayout bl = new BoxLayout(p,)。 (bl)。 //((54, , ))。 //颜色 Border border1 = (5,5,5,5)。 Border border2 = ()。 Border border3 = (border2, 登录 )。 Border border = (border1, border3)。 (border)。 // (border1)。 //(border2)。 莆田 学院 2020 届本科毕业论文 21 // (border3)。 JPanel panel_ID = new JPanel()。 JLabel label_ID = new JLabel( 号码 :)。 //(new Dimension(50,23))。 (label_ID)。 (new Dimension(175,23))。 (true)。 (boBox_ID)。 JPanel panel_Password = new JPanel()。 JLabel label_Password = new JLabel( 密码 :)。 //(new Dimension(50,23))。 (label_Password)。 (new Dimension(175,23))。 (39。 ● 39。 )。 (passwordField_Password)。 ((new Dimension(1,20)))。 基于 Socket的 简易 网络聊天系统的开发与设计 22 (panel_ID)。 ((new Dimension(1,10)))。 (panel_Password)。 ((new Dimension(1,30)))。 return p。 } /** * 生成一个按钮区域的 JPanel * @return 一个按钮区域的 JPanel */ private JPanel makeButton(){ JPanel p = new JPanel()。 _Login_Button_Listener listener = new _Login_Button_Listener(user_add_JDialog, this)。 (new Dimension(70,23))。 (listener)。 (new Dimension(70,23))。 (listener)。 莆田 学院 2020 届本科毕业论文 23 (new Dimension(70,23))。 (listener)。 (new Dimension(70,23))。 (listener)。 ()。 ((new Dimension(10,1)))。 ()。 ((new Dimension(10,1)))。 (button_Login)。 ((new Dimension(10,1)))。 ()。 return p。 } /** * 生成登录界面 JPanel * @return 登录界面 JPanel */ private JPanel makeMain(){ JPanel panel = new JPanel(new BorderLayout())。 ((),)。 基于 Socket的 简易 网络聊天系统的开发与设计 24 ((),)。 ((),)。 return panel。 } /** * 生成网络设置 JPanel * @return 网络设置 JPanel */ private JPanel makeNetOption(){ JPanel panel = new JPanel(new GridLayout(3,1))。 Border border1 = (5,5,5,5)。 Border border2 = ()。 Border border3 = (border2,网络设置 )。 Border border = (border1, border3)。 (border)。 莆田 学院 2020 届本科毕业论文 25 JPanel panel0 = new JPanel()。 ()。 (label_NetOption)。基于socket的多客户端网络聊天系统的开发与设计-53页
相关推荐
频率才能达到预定的传播距离,同时这是得到足够的回波功率的必要条件,只有得到足够的回波功率, 接收电路才能检测到回波信号和防止外界干扰信号的干扰。 经分析和大量实验表明,频率为 40KHz 左右的超声波在空气中传播的效率最佳,同时为了处理方便,发射的超声波被调制成 40KHz 左右、具有一定间隔的调制脉冲波信号。 超声波的回波 假设超声波通过的媒质是空气,任何物体都能反射、吸收
) and C/S (Client/Server, Client/Server) mode, multi protocol conversion munication protocol implemented. Then, the paper of the instant messaging system server and client modules of the main ponents
与单片机通信。 实时时钟 /日历提供秒、分、时、日、周、月和年等信息,对于小于 31 天的月,月末的日期自动进行调整,包括闰年校正的功能。 时钟的运行可以采用 24 小时或带 AM(上午) /PM(下午)的 12 小时格式 ,工作电压宽达 ~。 采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数 据。 DS1302 内部有一个
控( 2 F S K) 在 二进制数字调制中 ,若正弦载波的频率随二进制基带信号在 f1 和 f2 两个频率点间变化 ,则产生二进制移频键控信号 (2FSK 信号 )。 二进制移频键控信号的时间波形如图1 . 所示 , 图中波形 g 可分解为波形 e 和波形 f, 即二进制移频键控信号可以看成是两个不同载波的二进制振幅键控信 号的叠加。 若二进制基带信号的 1 符号对应于载波频率 f1, 0
c) (d) 图 驱动电路状态 上图 2中,从图 ( a) 到图 ( d) 分别表示 H桥式驱动电路的开关工作状态的切换,电机分别处于正转、反转、停机和短路制动 4个状态。 从图中可以看出,该电机的驱动电路可以完成本例的两个基本要求: 通过三极管的放大,保证了电机的驱动电流; 通过桥式电路,对不同开关的选择,可以实现单片机的数字电平控制三极管的导通和截止,从而控制小电机的正反转。 第二章 元器件
在输入采样阶段,可编程逻辑控制器以扫描方式依次地读入所有输入状态和数据,并将它们存入 I/O 映象区中的相应的单元内。 输入采样结束后,转入用户程序执行和输出刷新阶段。 在这两个阶段中,即使输入状态和数据发生变化, I/O 映象区中的相应单元的状态和数据也不会改变。 因此,如果输入是脉冲信号,则该脉冲信号的宽度必须大于一个扫描周期,才能保证在任何情况下, 该输入均能被读入。 (2)