基于Socket网络聊天系统开发与设计

时间:2022-03-27 07:44:19

基于Socket网络聊天系统开发与设计

随着 Internet 的飞速发展,网络聊天以其方便快捷的优点成为最普遍的网络交流方式之一,不仅越来越受到人们的青睐,而且还丰富了人们的网上生活。本网络聊天系统以 Client/Server 为开发模式,利用 JDBC 连接数据库,采用Java技术在TCP/IP环境下,实现客户端和服务器端两部分程序(Client和Server)的链接。系统对客户端发来的用户信息进行匹配、读取和转发,然后客户端模块能够实现点到点的聊天。基于Socket网络聊天系统设计具有开放性,实时性,多话题交错等特点,方便了人们网上交流。

【关键词】网络聊天 设计 模块 系统

随着网络技术的普及,网络聊天逐渐成为网络商圈和生活商圈中不可或缺的组成部分。网络上最常用的交流工具是腾讯 QQ,QQ 引用了 ICQ 的功能即只要将对方加为好友,不管对方是否在线,我们无论对方在哪里,只要登陆 QQ,他就能够看到我们给他发的信息,随时随地的和对方进行信息交流。现在的网络聊天已经不再是一个简单的沟通工具,而是一个信息资讯和娱乐的工具。随着技术的发展,网络聊天应该具备一定的运行方式和实现方式,也就需要开发出一个基于 Socket 的网络聊天工具。现在的计算机应用正从传统的单用户工作模式向多用户信息交流共享工作的方向发展,在工作过程中,多个用户交流信息即需要使多台机器能够联网并能交流数据,这样就必须要有个大家都认同的方式来实现这个目的,网络聊天打破了异地之间的距离限制。同时客户对于网络聊天工具的友好的界面和快捷的操作方式也越来越高,如今随着网络技术的不断完善,最初的文字交流发展成语音交流,在高效上也要求有较强的延展性,能够提供方便、快捷的交流。

1 系统开发功能

1.1 C/S计算技术提高了聊天速度

该技术充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,将服务器程序返回的结果以特定的形式显示给用户并进行相应的处理,再将结果返回给客户程序。聊天系统有多种实现方式,其中一种是点对点的聊天系统,还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登陆统一的聊天服务器。基于Socket的聊天系统中主要有两种角色,不同的客户端登陆是使用网页刷新方式,通过客户端不断地自动刷新,将服务器端整个页面内容下载到客户端显示,这种方式的聊天很快被更新的聊天技术所替代。 聊天系统在客户端和服务器之间主要传送的是文字信息,服务器把最近的文字信息推送到客户端,不但减少了网络传输内容,而且也提高了聊天速度。

1.2 实现了多功能的数据库管理系统

这种基于Socket的聊天系统有别于普通Web浏览的连接方式。客户端发出聊天信息的同时,客户端也在接受服务器发送过来的其他人的聊天信息,请求不存在那种前后对应关系,客户端和服务器一旦建立连接,与服务器端的连接实现与其他用户的文本的发送,并实现聊天的功能。C/S体系结构由客户应用程序和数据库服务程序组成,当我们对数据库中的数据进行任何操作时,客户程序就会自动发出请求,服务器程序和储存管理功能较为透明。对于工作在前台程序上的最终用户是“透明”的, Java应用为客户提供了一个操作系统的标准接口,在硬件和操作系统平台上安装一个Java平台之后,输出流程序从外部设备写数据时,使用输入流。输入流只能读不能写。在网络上靠一个双向链路进行通信,建立连接后,客户端可以发出数据的请求,服务器端进行处理,并将处理结果通过Socket返回。客户端通过Connect方法连接到指定的服务器,从服务端接收数据,将数据返回给客户端, 面向无连接的客户机/服务器交互过程。Eclipse是一个开放源代码、给Eclipse提供插件的开放源码项目,任何人都可以免费得到,并且越来越受人们的关注。目前最为流行的数据库管理系统是完全网络化的跨平台的关系型数据库系统,它是使用MySQL来连接用户的表,专注于速度、可靠性、扩展性和易用性,可移植性,容易学习,能够在很多不同的系统平台上工作,而且安全性和连接性十分灵活,密码传输均采用加密形式,保证了客户的密码安全。

2 系统设计分析

2.1 Visual C++可视化集成开发环境

Visual C++是一个功能强大的可视化软件开发工具。随着其新版本的不断问世,以Visual C++6.0 为平台,组件通过一个名为Developer Studio 的组件集成为和谐的开发环境。现在最新版本是vc 2010 ,简化了 Windows 编程工作,它不但提供了大量的代码,而且还指导用户编程时实现某些技术和功能。

2.2 MFC 组成类库

类库有些随编译器提供,由其他软件公司销售或者是由用户自己开发的。用户可以直接利用类库中包含的类定义应用程序所需的变量,有时则依赖于类库的设计和具体的应用程序。通常情况下基础类库的核心是以 C++形式封装了大部分的 Windows API,它完全支持 Windows 所有的函数、控件、消息、GDI 基本图形函数,通过宏来实现消息到成员函数的映射。同时也支持异常错误的处理,减少了程序出错的机会,在使用MFC 时还允许混合使用传统的函数调用。Winsock 网络编程在继承 Berkeley Sockets 的基础上,又进行了新的扩充,这些扩充有利于socket 的网络聊天室的开发,也有利于通过网络与其它Socket 应用程序进行通信。

2.3 可行性分析

可行性分析首先是对新系统的开发从技术、经济、社会的方面进行分析和研究。在开发系统的过程中,必须要节约开发成本,缩短开发周期。开发该系统成本就要集中在系统的开发和维护上,技术可行性:该系统使用的开发语言是Java,由于Java语言具有跨平台性,很多设计者都会选择它。其次是注意它的社会可行性,网络聊天系统只需要用户的电脑进入局域网就能访问,不必购买其他任何昂贵设备。对系统的组织结构和功能进行分析时,需要将系统调查中有关该业务流程的资料都联系起来作为下一步的分析基础,帮助我们了解业务的具体处理过程,发现和处理系统的调查工作中的欠缺和错误,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。

3 系统设计策略

3.1 功能设计

设置主页面的位置并声明主要控件,在按钮监听接口方法内进行判断,若按下连接,启动服务器端的进程类,创建监听端口并通过while循环等待客户端的连接,同时启动服务端的服务器,通过客户端传来的相应标志位实现客户端的昵称冲突。在客户端线程类中封装了Socket网络编程内容,并通过相应标志实现在线人数,关闭客户端,公聊私聊等的功能和显示。目标网络聊天系统的主要对象是局域网内的用户,使用交流更简单、快捷。设计本系统的目标如下: 一台电脑上能够同时登录多个不同的用户。用户注册后填写的基本资料和基本信息被数据库保存,用户使用注册时的用户名和密码登录系统。用户登录成功后,可以向单个或所有在线好友发送消息。文件传输,而且用户之间除了能够使用文字交流外,还能共享文件。

3.2 模块设计

一般情况下,网络通信程序是某应用程序中的一模块必须与采用该通信模块的其它应用程序开发者约定好,统一采用一种界面形式,使通信模块在移植到所需的应用程序时省时省力,形成的项目文件中的许多相关文件与界面形式密切联系,将通信模块函数化,并形成一个动态连接库文件,供主程序调用。

3.2.1 登陆模块设计

在许多情况下,通信模块应的主程序以 0.5 秒为一周期,在这段时间内 ,接收数据利用收到的数据进行运算,将运算结果发送到其它计算机节点,利用 Windows Sockets 的基于消息的网络事件异步选择机制,用消息来驱动数据的接收基础上,将数据的收和发放在高优先级线程,在软件设计 上,尽量避免在同一时间内发送大量数据无法实现的弊端。因此,需要保证网络要有足够的带宽,成功地实现数据传输的实时性。注册模块设计后,用户填写注册信息,直接进入主界面。登陆后,服务器将用户信息与数据库中存储的用户信息进行匹配。如果服务器异常或者是连接服务器失败,则显示错误,系统将停留在登录界面。

3.2.2 聊天模块设计

用户登录成功后,就进入到聊天页面。在信息输入框中点击发送信息按钮,就可以发出信息。接收文件用户选择文件的接收对象,点击文件就会被发送出去。在接收文件时,需要对文件进行命名,将文件发送框进行清空。

3.2.3 数据库模块设计

客户端通过 Connect 方法连接到指定的服务器,向服务器发送服务请求,通过 read 从服务端接收数据。 使用 Bind 方法绑定所指定的端口使 Socket 与一个本地端口相联, 使用 Listen 方法监听到用户端发出的连接请求时,调用 Accept 完成整个连接的操作; 处理客户端请求后,将数据返回给客户端,建立新的 Socket 以处理传入的连接请求。在设计过程中会遇到很多数据的问题,因此好的数据库就需要有一定的设计原则。主键与外键之间是相互对应关系,主键是实体的高度抽象,如果相对配对,表示实体之间的连接。在创建表过程中药注意表的原子性,基础表的结构式相对稳定,表中的记录需要长期保存。数据库中的每一列都是不可分割的基本数据项,实体中不能有多个值或者不能有重复的属性。数据库概念结构设计是各种数据模型的共同基础。对于该聊天系统,按照功能采用自顶向下地进行需求分析,将概念结构进一步转化为某一DBMS支持的数据模型,然后根据逻辑设计形成合理的全局逻辑结构,在MysqlDriver.java的getCon 方法中创建数据库的连接,同时返回该连接。

3.2.4 注册模块设计

客户端向服务器发送用户信息以后,进行用户名匹配,若没有匹配就将该用户的基本信息存储在数据库中,同时返回注册成功信息。该系统的注册流程使用if语句if e.getSource quit 来处理事件并退出系统。若用户点击“注册”按钮,客户端将用户信息发送到服务器端。对用户进行注册后,用户在登录界面中输入用户名和密码以后,点击登按钮。客户端将用户的信息与数据库中的信息进行匹配,若匹配成功,用户进入主界面;若匹配不成功,则返回到登录窗口系统的登录流程图。

4 结束语

总之,目前基于Internet的应用已经非常多了,这些应用无不在改变人们的传统生活方式。一套网络聊天系统的开发与设计变得尤为重要,通过该系统不但能够实现点对点的交流,还能够实现多人同时聊天,并且费用非常低廉,信息处理速度快,从而为人类创建出更多的财富和价值。

参考文献

[1]Java编程思想[M].机械工业出版社,2007.

[2]30天学通Java项目案例开发[M].北京:电子工业出版社,2009.

[3]Java Swing图形界面开发与案例详解[M].北京:清华大学出版社,2008.

[4]Java TCPIP Socket编程 原书第2版[M].北京:机械工业出版社,2009.

[5]Java范例大全[M].北京:机械工业出版社,2009.

[6]Java开发实战经典[M].北京:清华大学出版社,2009.

[7]Java程序设计一种跨学科的方法[M].北京:清华大学出版社,2009.

[8]Java程序设计教程[M].北京:机械工业出版社,2008.

[9]郎锐,罗发根.网络通信程序开发指南,2004 2.Bruce Eckel Thinking in C ++ 2002.

[10]唐自仰.刘瑾.张克君.基于J2ME/Servlet的手机聊天系统[J].计算机工程,2009,35(10).

[11]王晴,王娟,严隽亮,李良.基于Winsock技术的网络语音聊天系统的实现[J].科技创新导报,2007(36).

[12]李淑琴,刘恩.Li Shuqin.Liu En 移动agent在主动网中的应用[J].计算机与数字工程,2006,34(7).

作者简介

史雪,女,辽宁省锦州市人。大学本科学历。计算机科学与技术(师范)专业。

作者单位

渤海大学信息科学与技术学院 辽宁省锦州市 121000

上一篇:基于敏捷开发及多V模型的嵌入式温室网关的软件... 下一篇:三维CAD技术在机械行业设计中的应用