使用套接字socket
Socket类非常简单易用,因为java技术隐藏了建立网络连接和通过连接发送数据的复杂过程。实际上,java.net包提供的编程接口和操作文件时所使用的接口基本相同。
下面是一个示例程序,该程序只适用于非常简单的服务器
1 | import java.io.*; |
套接字超时
在可以访问数据之前从套接字读取信息时,读操作将会被阻塞。如果此时主机不可达,那么应用将要等待很长时间,由于底层操作系统的限制而最终会导致超时。
可以调用Socket类的setSoTimeout方法设置这个超时值,若在指定时间内数据依然不能被访问,就会抛出SocketTimeoutException异常。
1 | try{ |
还可以对获取连接的时间加以控制,这样就不会使获取连接的过程一直阻塞
1 | Socket s = new Socket(); |
因特网地址
如果需要在主机名和因特网地址之间进行转换,可以使用InetAddress类如果主机操作系统支持IPv6格式的因特网地址,java.net包也可以获取的到
1 | InetAddress address = InetAddress.getByName("www.baidu.com"); |
一些访问量较大的主机名常会对应于多个因特网地址,以实现负载均衡。当访问主机时,其因特网地址将从这三者中随机产生。可以通过调用getAllByName方法获得所有主机
1 | InetAddress[] address= InetAddress.getAllByName(host); |
示例程序如下:
1 | import java.net.*; |