Java网络编程:连接网络数据库的多种方法

(整期优先)网络出版时间:2010-01-11
/ 1

Java网络编程:连接网络数据库的多种方法

刘辉

刘辉(沈阳职业技术学院,沈阳110045)

摘要:Java是一种跨平台、健壮、安全、可移植,适合于分布式计算机环境的面向对象的编程语言,由于用Java开发的程序可以在网络上传输,并运行于任何客户机上,所以使用Java语言开发网络应用程序得到了越来越广泛的应用。本文结合Java网络编程的特点,介绍了基于TCP/IP协议如何建立TCPSocker实现与网络数据库连接的几种常用方法。

关键词:Java网络编程;TCPSocket;数据库

中图分类号:TP31文献标识码:A文章编号:1006-4311(2010)03-0154-01

1Java网络编程协议

Java网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通讯,而广泛的应用之一就是连接到网络数据库上,从而获取网络资源。

网络上的计算机要互相通信,必须遵循一定的协议。Java网络编程支持现在广泛使用的网络协议:TCP/IP协议和UDP协议,但使用方法上是不同的。

1.1使用TCP/IP协议

TCP/IP协议是一种面向连接的保证可靠传输的协议,通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方必须成对地建立两个socket连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是serversocket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

1.2使用UDP协议

UDP协议是一种无连接的协议,不保证信息的可靠传输,由Java技术中的DatagramSocket和DatagramPacket类支持。DatagramSocket对应TCP/IP协议下的Socket概念,但不需要创建两个socket,不可使用输入输出流。DatagramPacket数据包,是UDP协议下进行传输数据的单位,数据存放在字节数组中,其中包括了目标地址和端口以及传送的信息(所以不用建立点对点的连接)。

由于TCP/IP协议能够提供可靠的数据传输,如何在发送方和接收方建立Socket连接是关键的步骤,下面我们介绍目前比较常用的Java程序中建立Socket的几种方法。

2基于TCP/IP协议的Socket连接方法

Java中Socket连接的建立是通过Socket类实现的,通过重载的构造函数可以直接连接服务器,也可以建立未连接的Socket对象,并通过connect方法来连接服务器。此外,还支持自动或手动方式选择本机的IP地址。

2.1通过构造函数直接连接服务器

(1)自动选择IP。

这种方式是最常用的。使用的构造函数有如下两种:

在使用时只需要提供一个字符串类型的IP地址或域名以及一个整型的端口号即可,可能会抛出两个异常:UnknownHostException(提供的host并不存在或不合法)和IOException(其它的错误)。

这个构造函数只是将字符串形式的host改为InetAddress对象类型了,从而支持使用Socket类多次连接同一个IP或域名,效率比较高。在这个构造函数中只会发生IOException异常,UnknownHostException异常由InetAddress类抛出。

(2)手动绑定IP。

当本机有多块网卡或者在一个网卡上绑定了多个IP时,在连接服务器时也可以通过构造函数指定需要使用哪个IP。这时可以使用Socket类的另外两个构造函数来处理。

这两个构造函数的参数分为两部分,第一部分为前两个参数分别表示要连接的服务器的IP和端口号。第二部分为后两个参数,其中inetaddress1表示要使用的本地IP,而localPort则表示要绑定的本地端口号,在一般情况下将localPort设为0。

2.2通过connect方法连接服务器

可以先建立未连接的Socket对象,再通过类的connect方法来连接服务器,还可以通过类的bind方法来绑定本地IP。

下面,通过一个实例来演示以上方法建立Socket连接。

假设有两台计算机:PC1和PC2。PC1绑定有两个IP:192.168.1.100和200.200.200.1。PC2绑定有一个IP:200.200.200.4。PC1和PC2的子网掩码都是255.255.255.0。而PC1的默认网关为:192.168.28.254。下面的代码需要在PC1上运行。

3综述

Java网络编程可以支持多种协议,而在TCP/IP协议下建立Socket连接也有多种方法,其中IP地址和网关的设置都会影响连接的建立,还需要在应用时由编程者保证代码执行后连接的建立,才能执行之后的收发双方I/O通道的建立及通信过程。

参考文献:

[1]O'REILLY.Java网络编程[M].北京:电力出版社.