Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能。Java虚拟机负责提供与操作系统的实际连接。
InetAddress
作用:封装计算机的IP地址和DNS(没有端口信息!)。
特点:这个类没有构造函数。如果要得到对象,只能通过静态方法:getLocalHost、getByName、 getAllByName、 getAddress、getHostName。
【示例1】使用getLocalHost方法创建InetAddress对象
InetAddress addr = InetAddress.getLocalHost();
System.out.println(addr.getHostAddress()); // 返回:192.168.1.110
System.out.println(addr.getHostName()); // 输出计算机名
【示例2】根据域名得到InetAddress对象
InetAddress addr = InetAddress.getByName("www.163.com");
// 返回 163服务器的IP:61.135.253.15
System.out.println(addr.getHostAddress());
//输出:www.163.com
System.out.println(addr.getHostName());
【示例3】根据IP得到InetAddress对象
InetAddress addr = InetAddress.getByName("61.135.253.15");
//返回 163服务器的IP:61.135.253.15
System.out.println(addr.getHostAddress());
/*输出ip而不是域名。如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射,getHostName方法就直接返回这个IP地址。*/
System.out.println(addr.getHostName());
InetSocketAddress
作用:包含IP和端口,常用于Socket通信。
【示例4】InetSocketAddress的使用
InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",9000);
System.out.println(socketAddress.getHostName());
System.out.println(socketAddress2.getAddress());
URL类
IP地址唯一标识了Internet上的计算机,而URL则标识了这些计算机上的资源。类URL
代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
为了方便程序员编程,JDK中提供了URL类,该类的全名是java.net.URL,有了这样一个类,就可以使用它的各种方法来对URL对象进行分割、合并等处理。
【示例5】URL类的使用
URL u = new URL("http://www.google.cn:80/webhp#aa?canhu=33");
System.out.println("获取与此url关联的协议的默认端口:"+u.getDefaultPort());
System.out.println("getFile:"+u.getFile()); //端口号后面的内容
System.out.println("主机名:"+u.getHost()); //www.google.cn
System.out.println("路径:"+u.getPath()); //端口号后,参数前的内容
System.out.println("端口:"+u.getPort()); //如果www.google.cn:80则返回80.否则返回-1
System.out.println("协议:"+u.getProtocol());
System.out.println("参数部分:"+u.getQuery());
System.out.println("锚点:"+u.getRef());
// System.out.println(u.sameFile(u2)); //两个URL不同,则返回false.
// URLConnection conn = u.openConnection();
// InputStream is = u.openStream();
URL u1 = new URL("http://www.abc.com/aa/");
URL u2 = new URL(u,"2.html"); //相对路径构建url对象
System.out.println(u2.toString()); //http://www.abc.com/aa/2.html
【示例6】最简单的网络爬虫
void basicSpider() {
URL url = null;
InputStream is = null ;
BufferedReader br=null;
StringBuilder sb = new StringBuilder();
String temp = "";
try {
url = new URL("http://www.baidu.com");
is = url.openStream();
br = new BufferedReader(new InputStreamReader(is));
while((temp = br.readLine())!=null){
sb.append(temp); //这样就可以将网络内容下载到本地机器。然后进行数据分析,建立索引。这也是搜索引擎的第一步。
}
System.out.println(sb);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop