APP下载

基于Java局域网内实时通信系统设计

2014-10-21李佳毛岽博

计算机光盘软件与应用 2014年24期
关键词:服务器端局域网客户端

李佳 毛岽博

摘 要:本系统主要利用Java语言,C/S架构,并结合了Socket网络编程技术与Microsoft Office Access(数据库软件)技术,选择TCP传输协议在两台计算机之间实现了文本与文件的实时传输功能和离线留言功能,进而实现局域网内计算机间的实时通信。

关键词:实时通信;局域网;网络编程;服务器端;客户端

中图分类号:TP393.18

1 局域网内实时通信的发展概况

目前,国内外对局域网内通信的发展情况有一定差别。下面分别从国外和国内两大方面对局域网内通信的发展情况进行介绍。

1.1 国外的发展概况

由于国外的计算机技术发展相对来讲比较成熟,他们对充分利用内部网络资源的认知比较早,并且很早前就已经开发了相关的产品,所以现在各种以局域网为单位的实时通信系统已经进入相对稳定发展阶段,在各个大小企业中也得到了良好的实际应用效果。

1.2 国内的发展概况

在国内,企业对局域网的实时通信系统认知和使用情况并不是很好,在局域网内实现文件传输和资源共享方面,各个企业单位还存在很大的缺陷。那么,基于局域网内部网络开发的产品也就比较少,而且无论是从理论上或实践上,我们的技术都还不够完善,所以在企业中也就没有得到广泛的应用。

2 相关理论及基础技术

本系统采用了Java编程语言,并结合了对Socket网络编程和Microsoft Office Access数据库技术以及TCP传输协议的应用。对各技术具体介绍如下。

2.1 Java语言

Java作为一种程序设计语言,它是面向对象的。通过网络协议,我们可以直接或者间接的与其它计算机进行通信,这就是网络编程的目的,要使两台计算机之间进行通信需解决两个主要问题:一个是如何准确定位网络上的主机地址;另外一个是定位到主机以后如何有效安全地进行通信[1]。

Java是一种提供了比较强大的网络编程接口的网络编程语言。针对不同层次的网络通信,Java提供了4大类网络功能,其中,TCP/IP是Internet使用的協议组,而Socket是该协议组的组合,Socket实现了两台计算机之间通过端口来实现通信,Socket类是在Java.net包中提供的,该包隐藏了Socket的具体实现细节,使得程序员不需要自己编写接口程序,就可以快速的实现网络通信[2]。

2.2 Socket编程实现原理

进程之间要进行通信,那么首先就要建立各自的Socket,每个Socket都可以进行读操作和写操作,而进行读和写操作的时候,分别用到的就是Socket中的输入流和输出流。

建立连接后,客户程序就可以向Socket里写入自己的请求,在一个连接请求被服务器监听到后,客户端和服务器就成功建立了一个通信连接。而在成功建立通信连接的过程中,被本地端口号绑定的客户端会与一个Socket连接,客户端可以通过这个Socket的写操作来通知服务器,然后通过Socket的读操作来得到数据。服务器也同样地得到一个本地端口号,而且它还需要一个新的端口号来监听原始端口上的其它连接请求。而且服务器也可以给它的本地端口连接一个Socket并通过读写操作处理来自客户端的请求[3]。

2.2.1 建立Socket应注意的问题

当建立一个通信用的Socket的时候,必须指出通信要使用什么样的的风格,使用什么协议等,也就是需要注意下面的问题。

(1)在通信过程中是否必须始终面向一个连接,我们把这种情况形象地比作电话,我们打电话的时候首先要和对方的电话建立连接,在整个通话的过程中,我们会一直保持这个连接,直到双方中的一方挂断电话。另一种情况就是传输数据的过程中不需要建立连接,就像发送电报一样,直接发送数据就可以了;

(2)在数据传输的过程中是否允许数据丢失,有的通信风格能够保证接受到的数据顺序和发送时的顺序是一致的,而有的不是这样:既不能保证按顺序到达,也不能保证数据是否丢失[4]。

2.2.2 从连接建立到结束的过程

从连接的建立到连接的结束,每个Socket应用都大致包含以下几个基本步骤。

服务器端的Socket绑定于特定的端口,服务器侦听Socket等待连接请求。客户端向服务器端和特定端口提交连接请求。服务器接受连接,产生一新的Socket,绑定到另一端口,由此Socket来处理和客户端的交互,服务器继续侦听原来的Socket来接受其他客户端的连接请求。服务器端每次当建立一个新的Socket连接的时候,主线程就启动一个新的线程,负责服务器与客户端的通信;而主线程继续等待下一个客户端的连接。当客户端断开连接后,子线程释放其占用的所有Socket资源[5]。

连接成功后客户端也会产生一个Socket,并通过它来与服务器端进行通信,要注意的是客户端Socket并不与特定端口绑定。最后,服务器端和客户端就通过读取和写入各自的Socket来进行通信。

2.3 Microsoft Office Access数据库

本设计通过对Access数据库的应用,更好的管理用户信息、用户列表。用户可以修改自己的资料和密码,查看其他用户资料,随意添加或删除用户。服务器端可以显示在线用户以及所有用户资料。这所有的通信用户信息都记录在数据库里,并以列表形式显示到界面上,使系统好友界面更直观、更友善。

2.4 TCP与UDP协议

TCP与UDP是工作在传输层的两个核心协议,它们可以为应用层提供会话和数据报通信服务。虽然,在本设计中,编写Java应用程序时,主要是在第4层也就是在应用层上完成的。但是,仍然需要掌握传输层的TCP和UDP协议,因为这将决定我们在编程时使用哪种Java类。

3 系统总体设计分析

3.1 系统设计目标

根据调研,本设计需要满足以下几个系统设计目标:

(1)实用性的原则。按照简单实用的原则真正为局域网的实际工作服务,合理设计本系统。

(2)程序可扩展性的原则。采用开放的标准和接口,便于将来想要添加更多的功能。

(3)传输可靠性的原则。必须为用户提供可靠的服务,尤其是要保证传输的稳定性。

(4)友好性的原则。希望本设计对计算机知识了解很少的用户也可以使用,所以系统操作上要求简单方便,便于用户使用。

3.2 系统总体结构

本系统采用目前比较流行的网络通信模型C/S结构。在C/S结构中,服务器端与客户端是上级和下级的关系。服务器端始终处于被动地等待客户端提出连接请求,并给予响应。客户端在需要服务器的时候就向服务器提出连接请求。

3.3 系统功能分析

从企业内部的实用性角度考虑,本系统应具备3大基本功能,即局域网内点对点文本传输功能,离线留言功能和文件传输功能。在设计时,应根据系统的设计目标,使安排布局上具有简洁、流畅等特点,以及在编程时考虑传输的稳定与快捷,真正做到“简洁、高效、流畅、安全”的使用环境。根据以上的功能特点分析,本系统可由两大模块来实现:服务器端模块和客户端模块。其中,客户端模块实现两个用户之间的文本传输、离线留言和文件传输功能。

4 系统详细设计

本系统对于主要模块设计部分可以分为三大部分:服务器端模块、客户端模块和系统功能模块。其中服务器端模块和客户端模块的设计主要通过套接字来完成服务器端与客户端间的连通。功能模塊设计主要分为:文本实时传输和文件实时传输两方面。下面分别对这些模块的设计进行详细的介绍。

4.1 服务器端与客户端之间的整体工作模式

本系统通过Socket接口来实现客户端、服务器端之间的通信,Socket是两个程序进行双向数据传输的网络通信端点,主要由一个端口号和一个IP地址来标识。

服务器端首先要创建自己的Socket,并要把这个Socket与某一个端口绑定,然后通过accept()方法监听有无连接请求。客户端同样首先也要创建自己的Socket,这个Socket会指明服务器程序所在的IP地址,这时就发出了自己的连接请求。

4.2 服务器端详细业务流程

本系统中,首先服务器端处于开启状态,时刻监听有无来自客户端的连接请求。若发现客户端发出连接请求,立即给予响应。在服务器端与客户端连接后,服务器端可以查询在线用户,查询所有用户基本资料、用户名、密码等信息。在结束连接时,关闭服务器。

4.3 客户端详细业务流程

本系统中,欲使客户端与服务器建立连接,首先客户端需向服务器发送一个连接请求,服务器响应其请求后,双方才能连通。然后,客户端通过用户名和密码进行登录。在登录之前需要进行IP测试,当IP测试成功,既与服务器连接成功,此时客户端用户就可以与其他用户进行实时通信,实现本系统功能。当用户不进行通信时即可结束线程。

5 结束语

本设计最大优点之一就是界面友好、简单、用户列表清晰易操作。即使从没有使用过本系统的用户,也可很快上手。所有功能界面都集成到一起,大大减少了界面的数量以及界面交换的不便。

它的另外一个优点就是有很好的可扩展性,本设计采用的是设计模式,很好的运用了Java中的继承和抽象类等特性。这种设计模式就使程序有了很好的扩展性。当想要加一些功能的时候,只要在抽象类中对想要加入功能的方法进行声明,然后再用具体的实体类去实现就可以了,而不会对其他的程序造成影响,有很好的独立性。

参考文献:

[1]杜瑞庆,闫敬,李银兵.Java中的数据报通讯方式[J].福建电脑,2007(04):189.

[2]王静,曲凤娟.基于Socket的多用户并发通信的设计[J].福建电脑,2007(03):164.

[3]苏宏良.储能电池组远程监控系统研究与设计[D].武汉:武汉理工大学,2010.

[4]丁颖丽.三层计算构架中Logistic回归分析的设计与实现[D].上海:东华大学,2008.

[5]陈更力,张青.基于Java Socket 网络编程的一种新实现[J].电脑开发与应用,2006(06):13.

作者简介:李佳(1988.01-),山东黄县人,助理工程师,工学学士,研究方向:通信工程。

作者单位:国家新闻出版广电总局二九二台,山东青岛 266000

猜你喜欢

服务器端局域网客户端
Linux环境下基于Socket的数据传输软件设计
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
浅析异步通信层的架构在ASP.NET 程序中的应用
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
基于Qt的安全即时通讯软件服务器端设计