socket聊天系统的实现

socket聊天系统的实现

ID:37905254

大小:539.25 KB

页数:33页

时间:2019-06-02

socket聊天系统的实现_第1页
socket聊天系统的实现_第2页
socket聊天系统的实现_第3页
socket聊天系统的实现_第4页
socket聊天系统的实现_第5页
资源描述:

《socket聊天系统的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.程序结构简介ChatDialogl类:聊天对话框类,用来处理单聊界面,实现了一对一聊天,且会自动侦测窗口是否存在。ChatMessageDialog类:窗口弹出消息类,用来显示各种提示消息,模态对话框。DB_Controler类:数据库管理类,所有与数据库有关的操作都包装到这个类中了。FriendTree类:朋友树类,提供类似树形结构的管理方式来管理在线好友。LoginDialog类:登陆对话框类。NewChatClient类:客户端类,用来与服务器建立连接,以及用来与服务器端通信。NewChatServer类:服务器类,用来监听端口,建立与连接客户端的连接,管理

2、并为客户端提供各种通信服务。RegistDialog类:注册对话框类,用来提供注册服务。Scaner类:文件浏览类,用来浏览文件并取出路径信息,为日志文件输出提供路径。本例子程序采用虽然采用来数据库来管理登陆信息,注册信息,用户个人信息,但程序主体还是采用TCP套接字的方式来建立网络通讯,NewChatClient,NewChatServer类就是用来建立并管理连接资源的类,由于才TCP方式,server端采用死循环来对8888端口进行监听,没有客户端建立连接,就把该客户端放入的容器中(一对一容器,和一对多容器),然后开启服务线程,为客户端提供不同的通信服务。不论客户

3、端还是服务端多处采用多线程用来提高响应及服务速度。所以服务器端肯定会在大用户的情况下出现反应迟缓,后期服务器端会加入线程池技术来提供更多更好的连接数。由于作者水平有限,虽运用了面向对象的思想来设计本例子程序,但还是有不合思想的地方后期会再度重构,达到高耦合低内聚的设计目标,以期方便后期加入更多功能。再有客户端服务器端的通信协议在后文代码中体现不在此赘述,协议均采用明文格式,后期会加强改为加密格式,提高网络安全性。程序主要部分流程图Server端服务线程流程图:有消息无消息监听来自客户端的消息客户端有信息发过来吗还连接着bconnected?Bconnected=tru

4、eBconnected=false关闭服务线程根据连接信息初始化服务线程是给服务的消息吗显示在消息框中取出发送内容是给某个端口的消息吗是登陆的消息吗是注册的消息吗提交给注册模块处理提交给登陆模块处理根据端口转发给对方YesYesYesYesNoNoNoNo有链接监听本机上8888端口开始服务器等待客户端连接交给服务线程处理无连接还开着吗Started?结束关闭服务器Started=trueStarted=falseServer端主线线程的流程图:客户端流程图:退出开始通过Scoket建立TCP连接交给服务线程,处理接受消息是否按下或回车监听回车键和发送按钮通过套接字发

5、送文本框内容退出没?没有按下按下没有退出退出客户端服务线程:初始化服务线程监听来自服务器Scocket端的消息有消息吗?在Textarea中显示消息结束还接收吗?bconnected没有有Bconnexted=falseBconnexted=true4.软件编码和调试由于本次试验只在于练习并熟悉TCP的连接方式,所以代码只附上NewChatClient和NewChatServer其他与连接不重要部分不在报告中体现。NewChatServer://一种布局管理器用来组织用户界面的importjava.awt.BorderLayout;//事件响应的事件类importja

6、va.awt.event.ActionEvent;//事件监听类importjava.awt.event.ActionListener;//一种实现了窗口接口的抽象类importjava.awt.event.WindowAdapter;//窗口的事件类importjava.awt.event.WindowEvent;//数据输入流类用来对传入数据进行输入的管道importjava.io.DataInputStream;//数据输出流用来对传出数据进行输出的管道importjava.io.DataOutputStream;//IO的异常处理类importjava.io.

7、IOException;//对端口地址绑定的异常处理importjava.net.BindException;//TCP中的服务器端的Socketimportjava.net.ServerSocket;//TCP中客户端的Socket本类中用于保存客户端的链接对象importjava.net.Socket;//包装Socket链接中的各种异常importjava.net.SocketException;//日期格式处理的类importjava.text.DateFormat;//日期类importjava.util.Date;//哈希图容器类用来存储

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。