基于Java的网络版JQ开发心得

2017-05-04 18:24聂称心杜月莹吉璇
艺术科技 2016年12期
关键词:面向对象

聂称心+杜月莹+吉璇

摘 要:Java语言诞生于1991年,起初他只是Sun公司为自己旗下的一些消费性电子产品所设计的通用环境,在那个年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意。Sun公司研发人员根据嵌入式软件的要求对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了Oak面向对象语言,Java的前身诞生了。经过对oak语言的一系列修改,Java在James Gosling手中诞生了。

关键词:Java;James Gosling;面向对象;Oak

说到Java开发,就不得不谈一谈Java语言的特点,与其他语言相比,Java的可移植性、安全性较好,并提供了并发机制,具有很高的性能。其次,Java语言也最大限度地利用了网络,App在互联网上传输可以不受CPU和环境的限制。其次,他还提供了丰富的内库供使用者选择,当然,这些库的底层都是由C和C++编写的。

下面,笔者就基于网络版的JQ开发来粗浅地谈谈我眼中的Java开发。娱乐聊天作为一个人们津津乐道的话题,早已深入人心,为了满足笔者的“一己私欲”,特此开发出了类似QQ的一款聊天工具——JQ 1.0。在聊天界面中,一般由客户端和服务器端两个部分组成,服务器端主要是负责客户端的连接、信息的传递,将客户端A的消息传递给客户端B,说起来你们可能不信,QQ的开发也是基于这个原理。也就是說,只要你是通过这个服务器发送的消息,就没有他查不到的,只要你通过这个平台,就没有任何隐私可言。在客户端与服务器端的数据传输中,我们需要使用到TCP和UDP协议。粗略地说一下这两个协议,双方都是一种网络传输协议,TCP需要建立连接,而UDP不需要建立连接(无连接传输)。

TCP属于可靠的传输协议:因为传输前双方建立了连接,相当于买卖双方建立好了交易合同,传输中一般不会出现意外,直到连接终止;UDP属于不可靠的传输协议:UDP的所谓连接相当于一种映射,UDP单方面的认为目标地址(端口)是可用的,从而进行收发数据,而实际上目标地址(端口)未必可用,所以传输数据不可靠。由于TCP需要建立真实的连接,所以消耗服务器的负载要大于UDP,通过分析这些特点,信息传输一般会使用UDP协议。

在进行编写程序的初期,我们需要明白,既然是聊天室就要有多个客户端连接一个服务器端来达到大家在同一个聊天室中聊天的目的,因此,我们用到了线程,一个进程都有独立的代码和数据空间,进程间的切换会有较大的开销,一个进程包含1--n个线程。同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小,多进程是指操作系统能同时运行多个任务(程序)。多线程是指在同一程序中有多个顺序流在执行。其中,创建线程有两个方法,一个是继承Thread类,并重写其中的run( )方法,一个是实现Runnable接口,定义其中的run( )方法。

class A extends Thread{ }//创建一个A类,

/*部分代码略*/

//启动线程并重写其中的run( )方法

Thread a=new Thread(new A(){

public void run(){ }

}).start();

服务器端通过系统调用创建一个ServerSocket的类指定的本地端口绑定,就可以在端口进行侦听。首先,服务器端需要先定义一个没有被占用的端口,并设置本机在局域网中IP地址,客户端指定服务器的主机地址和端口号向服务器发送连接请求,如果有客户端连接请求,将请求发送服务器端,经服务器端同意后方可连接成功。这就是利用UDP协议来进行局域网之间的通信连接,一方决定结束通信,向对方发送结束信息,另一方收到结束信息后,双方分别关闭各自的连接。对象停止等候客户端连接请求反之,在客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过多线程来加载不同的用户,过IO流来进行数据的写入和数据的读取。准确地说,是通过流中的高级流序列化流和反序列化流来进行数据的交互。

以服务器所在的主机的IP为“111.111.111.111”所侦听的端口号为“8088”。分别先后启动服务器和客户端应用程序,客户端用户填入登录信息,当服务器收到客户端的登录请求后,若验证登录信息正确,则向客户端发送一个反馈一个登录成功的消息,客户端和服务器通过套接字建立了联系。建立连接后双方就可以相互通信:客户端在自己的文本框输入要发送的信息,点击发送后,发送的信息就会显示在服务器和目的客户端的文本域中,同样,服务器也可以在自己的文本框输入系统信息,点击发送信息按钮后,发送的信息就会显示在服务器和客户端的文本域中。如若要发送文本文件,在客户端界面点击“浏览”,显示一个打开对话框,在上面选择你要发送的文本(*.txt)点击发送,服务器再将文档发给目的用户,将在目的用户的聊天记录文本框中显示整个文档的内容。以上就是笔者做JQ开发的一点心得,望读者批评指正。

参考文献:

[1] David Flanagan . JAVA技术手册(第4版)[M].清华大学出版社,2011.

[2] Stephanie Bodoff . he J2EE Tutorial(中文)[M].颜承,等,译.中国铁道出版社,2012.

[3] Marty Hall,Larry Brown . Servlet与JSP核心编程[M].赵学良,译.清华大学出版社,2014.

猜你喜欢
面向对象
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
基于面向对象的Office评测系统的分析
峰丛洼地农作物面向对象信息提取规则集
面向对象的SoS体系结构建模方法及应用
面向对象信息提取中影像分割参数的选择