77范文网 - 专业文章范例文档资料分享平台

基于Socket网络聊天系统的设计与实现(6)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

是填写用户名和密码是否注册成功否用户名是否存在是数据库匹配用户名或密码是否为空运行程序注册窗口注册

图4.2 注册流程图

二、主要实现代码:

当用户启动客户端,首先出现一个注册窗口。窗口上包括三个按钮:登录、注册、退出。若用户点击“退出”按钮,则将调用类Chat中的方法actionPerformed()使用if语句if(e.getSource==quit)来处理事件,采用System.exit(-1)关闭窗口,退出系统。若用户点击“注册”按钮,客户端将用户信息发送到服务器端。服务器启动后,调用类FriendsThread对用户的注册请求进行监听,当客户端发来注册请求和用户信息之后,调用类DtatBases中的方法isuser()将用户名进行匹配,若没有在数据库中找到该用户名,String sql = \

+ \将用信息添加到数据库,同时返回注册成功给客户端。 dout.writeUTF(\

String s1 = din.readUTF(); if(s1.equals(\成功注册\

JOptionPane.showMessageDialog(null, s1);

} else if(s1.equals(\该用户名已经被注册\

JOptionPane.showMessageDialog(null, s1);

}else {

JOptionPane.showMessageDialog(null, \注册失败\

22

第三节 登录模块实现

一、功能描述

用户进行注册后,在登录界面中输入用户名和密码以后,点击登按钮。客户端向服务器发送登录请求和好友基本信息,服务器将用户的信息与数据库中的信息进行匹配,若匹配成功,用户进入主界面;若匹配不成功,则返回到登录窗口系统的登录流程图如图4.3。

二、主要实现代码:

用户在注册以后,只需要填写用户名和密码,点击登录按钮。客户端向服务器发送登录请求,服务器调用类FriendsThread建立一个新的Socket,然后调用其中的run()方法,在run方法中调用DataBase.java中的ispasswd()对用户的用户名和密码进行匹配。

if (new DataBases().isuser(t[1])) {

if (new DataBases().ispasswd(t[1], t[3])) { dout.writeUTF(\成功登录\

System.out.println(t[1]+\进入了聊天系统\UserVo user = new UserVo(t[1], t[2], socket);

new Remind().remindOne(socket);//显示所有在线用户 LoginUser.map.put(t[1], user);

new Remind().remindAll(user);//提醒所有用户该用户已上线

当服务器匹配成功后,向客户端发送登录成功的信息。用户进入主界面后,同时提醒所有在线用户该用户上线。然后调用UserVo.java中的UseVo(String username,String sex, Socket Soc) 和Remind.java中的remindOne()和remindAll将用户信息显示在好友列表中,同时在用户自己的好友列表中显示当前在线用户,在其他用户的好友列表中,将该用户的信息显示出来。

23

是运行程序登录窗口填写用户名和密码是否为空否否是否匹配成功是进入功能界面数据库匹配 图4.3 登录流程图

第四节 聊天模块实现

一、功能描述

用户登录成功后将进入主界面,用户在主界面中将看到在线用户。该用户可以选择单个用户进行私聊,也可以与当前所有人进行群聊。用户在选择用户进行私聊时,可以在好友列表中选择用户,也可以在组合框中选择用户名,进行私聊必须勾选私聊框。

二、主要代码实现

用户在选择与在线用户私聊时,客户端调用MainFrame.java中的valueChanged()监听用户是都在好友列表中选择了用户 String s1 = s.substring(0, s.indexOf(\【\

jc1.setSelectedItem(s1);//使组合框的好友也为选中的好友

当用户选择用户以后,组合框中的用户也变成被选择的用户。同时,用户进行私聊时必须勾选私聊框,调用该类中的itemStateChanged()来判断用户是否勾选了私聊框。用户在输入框中输入聊天消息,点击“发送消息”按钮之后,客户端就将聊天信息、信息发送者和信息接收者信息发送给服务器,

dout.writeUTF(\

send1.setText(\

发送给服务器以后,信息数据库就自动清空。服务器端接受到客户端发出的信息

24

后,调用LoginUser.java寻找信息接收者的信息基本信息, user=LoginUser.map.get(sendname);

soc = user.getSoc();

dout=new DataOutputStream(soc.getOutputStream()); dout.writeUTF(sendname+\

服务器找到用户信息后,就将信息和信息发送者转发到该用户。该用户的用户频道中将显示消息内容、信息发送者和系统当前时间。同样在发送信息用户的用户频道中也将显示用户发送信息的内容、信息接收者和系统当前时间。

用户与所有用户群聊时,可以在好友列表中选择“所有人”或者在组合框中选择“所有人”项,其实现方法与私聊差不多,只是不需要勾选私聊框。在服务器端

if(sendname.equals(\所有人.........\

for(String s:LoginUser.map.keySet()) {

System.out.println(s); user = LoginUser.map.get(s); soc = user.getSoc();

dout=new DataOutputStream(soc.getOutputStream());

dout.writeUTF(\

服务器在LoginUser.java中得到所有用户的信息,所有用户都将获得一个Socket,服务器将信息内容和信息发送者准确转发到每一个用户。在客户端,每个用户的主频道上显示信息发送者和信息内容。

第五节 文件传输模块实现

一、功能描述

用户在好友列表中选择发送文件的对象,点击“打开文件”按钮,弹出一个文件选择框,用户可以选择本地文件作为传输文件。用户选择好文件后,就可以点击“发送文件”按钮,将文件发送出去,文件发送文件流程图如图4.4。文件接收者在文件接收框中选择文件,点击“文件接收”按钮,弹出文件保存对话框,用户选择文件保存路径,为文件命名,命名时加上文件的后缀名,文件接收完成后,可以将文件打开,接收文件流程图如图4.5。

25

主界面打开文件选择文件打开选择好友发送文件 图4.4 发送文件流程图

主界面接收文件选择保存路径文件命名确定打开文件 图4.5 文件发送流程图

二、主要实现代码

用户点击“打开文件”按钮后,客户端调用MainFrame.java中的actionPerformed(),使用FileDialog f = new FileDialog(this);f.setVisible(true);弹出一个文件选择对话框,并将其设置为可见。用户选择文件后,在发送文件框中显示出文件的路径,用户点击“文件发送”按钮后,客户端将文件发送者、文件接受者和文件信息发送给服务器,然后调用MainFrame.java中的类sendfilethread中的run()。

dout.writeUTF(\electedValue());

filename = (String)jl2.getSelectedValue(); sendfilethread s = new sendfilethread(); s.start();

服务器端接受到客户端发来的信息,调用LoginUser.java找到文件接收者的基本信息。服务器获得用户的端口号和网络地址,然后将文件进行转发。 String ip=soc.getInetAddress().getHostAddress() ;

dout.writeUTF(\当好友接收到接收文件的提示后,好友选中文件,点击“接收文件”按钮后,弹出一个对话框,好友可以选择文件的保存路径JFileChooser jfc = new JFileChooser();int result = jfc.showSaveDialog(MainFrame.this),然后启动线程accepfilethread()接收文件。

while((len=ddin.read())!=-1) {//若数据没有读取完,则执行该循环

}

bo.write(len);//把缓冲区的数据写入 bo.flush();//清空缓冲区中的数据

bo.close(); fileon.close();

26

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Socket网络聊天系统的设计与实现(6)在线全文阅读。

基于Socket网络聊天系统的设计与实现(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/446313.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: