没有合适的资源?快使用搜索试试~ 我知道了~
首页java网络连接数据库java网络连接数据库
java网络连接数据库java网络连接数据库
4星 · 超过85%的资源 需积分: 14 12 下载量 121 浏览量
更新于2023-03-16
评论
收藏 114KB DOC 举报
java网络连接数据库 图文都有比较详细java网络连接数据库 图文都有比较详细java网络连接数据库 图文都有比较详细java网络连接数据库 图文都有比较详细
资源详情
资源评论
资源推荐
一、通过构造方法连接服务器
我们可以通过 6 个重载构造函数以不同的方式来连接服务器。这 6 个重载的构造函数可以
分为两类:
1. 自动选择 IP
这种方式是最常用的。所谓自动选择 IP,是指当本机有多块网卡或者在一个网卡上绑定了
多个 IP 时,Socket 类会自动为我们选择一个可用的 IP。在上述 6 个构造方法中有 4 个是使
用这种方法来连接服务器的。
<!--[if !supportLists]-->(1)
<!--[endif]-->public Socket(String host, int port)
这是最常用的构造方法,在前面的例子中就是使用的这个构造方法。在使用时只需要提供
一个字符串类型的 IP 或域名以及一个整型的端口号即可。在这个构造方法中可能会抛出两
个错误:UnknownHostException 和 IOException。发生第一个错误的原因是我们提供的 host
并不存在或不合法,而其它的错误被归为 IO 错误。因此,这个构造方法的完整定义是:
public Socket(String host, int port)
throws UnknownHostException, IOException
(2) public Socket(InetAddress inetaddress, int port)
这个构造方法和第一种构造方法类似,只是将字符串形式的 host 改为 InetAddress 对象类型
了。在这个构造方法中之所以要使用 InetAddress 类主要是因为考虑到在程序中可能需要使
用 Socket 类多次连接同一个 IP 或域名,这样使用 InetAddress 类的效率比较高。另外,在
使用字符串类型的 host 连接服务器时,可能会发生两个错误,但使用 InetAddress 对象来描
述 host , 只 会 发 生 IOException 错 误 , 这 是 因 为 当 你 将 IP 或 域名 传 给 InetAddress 时 ,
InetAddress 会自动检查这个 IP 或域名,如果这个 IP 或域名无效,那么 InetAddress 就会抛
出 UnknownHostException 错误,而不会由 Socket 类的构造方法抛出。因此,这个构造方法
的完整定义是:
public Socket(InetAddress inetaddress,
int port) throws IOException
(3) public Socket(String host, int port, boolean stream)
这个构造方法和第一种构造方法差不多,只是多了一个 boolean 类型的 stream 参数。如果
这个 stream 为 true,那么这个构造方法和第一种构造方法完全一样。如果 stream 为 false,
则使用 UDP 协议建立一个 UDP 连接(UDP 将在下面的章节详细讨论,在这里只要知道它
和 TCP 最大的区别是 UDP 是面向无连接的,而 TCP 是面向有连接的),也许是当初 Sun
的开发人员在编写 Socket 类时还未考虑编写处理 UDP 连接的 DatagramSocket 类,所以才
将 建 立 UDP 连 接 的 功 能 加 入 到 Socket 类 中 , 不 过 Sun 在 后 来 的 JDK 中 加 入 了
DatagramSocket 类,所以,这个构造方法就没什么用了,因此,Sun 将其设为了 Deprecated
标记,也就是说,这个构造方法在以后的 JDK 版本中可以会被删除。其于以上原因,在使
用 Java 编写网络程序时,尽量不要使用这个构造方法来建立 UDP 连接。
(4) public Socket(InetAddress inetaddress, int port, boolean flag)
这个构造方法和第三种构造方法的 flag 标记的含义一样,也是不建议使用的。
下面的代码演示上述 4 种构造方法的使用:
package mysocket;
import java.net.*;
import java.io.*;
public class MoreConnection
{
private static void closeSocket(Socket socket)
{
if (socket != null)
try
{
socket.close();
}
catch (Exception e) { }
}
public static void main(String[] args)
{
Socket socket1 = null, socket2 = null, socket3 = null, socket4 =
null;
try
{
// 如果将 www.ptpress.com.cn 改成其它不存在的域名,
将抛出 UnknownHostException 错误
// 测试 public Socket(String host, int port)
socket1 = new Socket("www.ptpress.com.cn", 80);
System.out.println("socket1 连接成功!");
// 测试 public Socket(InetAddress inetaddress, int port)
socket2 = new
Socket(InetAddress.getByName("www.ptpress.com.cn"), 80);
System.out.println("socket2 连接成功!");
// 下面的两种建立连接的方式并不建议使用
// 测试 public Socket(String host, int port, boolean stream)
socket3 = new Socket("www.ptpress.com.cn", 80, false);
System.out.println("socket3 连接成功!");
// 测试 public Socket(InetAddress inetaddress, int i, boolean flag)
socket4 = new
Socket(InetAddress.getByName("www.ptpress.com.cn"), 80, false);
System.out.println("socket4 连接成功!");
}
catch (UnknownHostException e)
{
System.out.println("UnknownHostException 被抛出!");
}
catch (IOException e)
{
System.out.println("IOException 被抛出!");
}
finally
{
closeSocket(socket1);
closeSocket(socket2);
closeSocket(socket3);
closeSocket(socket4);
}
}
}
在上面代码中的最后通过 finally 关闭了被打开的 Socket 连接,这是一个好习惯。因为只有
在将关闭 Socket 连接的代码写在 finally 里,无论是否出错,都会执行这些代码。但要注意,
在关闭 Socket 连接之前,必须检查 Socket 对象是否为 null,这是因为错误很可能在建立连
接时发生,这样 Socket 对象就没有建立成功,也就用不着关闭了。
1.手动绑定 IP
当本机有多个 IP 时(这些 IP 可能是多块网卡上的,也可能是一块网卡上绑定的多个 IP),
在连接服务器时需要由客户端确定需要使用哪个 IP。这样就必须使用 Socket 类的另外两个
构方法来处理。下面让我们来看看这两个构造方法是如何来使用特定的 IP 来连接服务器
的。
public Socket(String host, int port, InetAddress inetaddress, int
localPort)
这个构造方法的参数分为两部分,第一部分为前两个参数:host 和 port,它们分别表示要连
接 的 服 务 器 的 IP 和 端 口 号 。 第 二 部 分 为 后 两 个 参 数 : inetaddress 和 localPort 。 其 中
inetaddress 则表示要使 用的本地 的 IP ,而 localPort 则表示要绑定的本 地端口号 。这个
localPort 这以设置为本机的任何未被绑定的端口号。如果将 localPort 的值设为 0,java 将在
1024 到 65,535 之间随即选择一个未绑定的端口号。因此,在一般情况下将 localPort 设为
0。
public Socket(InetAddress inetaddress, int port, InetAddress
inetaddress1, int localPort)
这个构造方法和第一个构造方法基本相同,只是将第一个参数 host 换成了 inetaddress。其它
的使用方法和第一个构造方法类似。
在下面的代码中将使用这两个构造方法来做一个实验。我们假设有两台计算机:PC1 和
PC2 。 PC1 和 PC2 各 有 一 块 网 卡 。 PC1 绑 定 有 两 个 IP : 192.168.18.252 和
200.200.200.200 。 PC2 绑 定 有 一 个 IP : 200.200.200.4 。 PC1 和 PC2 的 子 网 掩 码 都 是
255.255.255.0。而 PC1 的默认网关为:192.168.28.254。下面的代码需要在 PC1 上运行。
package mysocket;
import java.net.*;
public class MoreConnection1
{
public static void main(String[] args)
{
剩余15页未读,继续阅读
lmc1234
- 粉丝: 1
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1