首页 > 代码库 > Java中的网络支持InetAddress&URL

Java中的网络支持InetAddress&URL

 

针对网络通信的不同层次,Java提供的网络功能有四大类

InetAddress:用于标识网络上的硬件资源。(说白了就是IP地址的相关信息)

URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据

Sockets:使用TCP协议实现网络通信的Socket相关的类

Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。(通过在网络中发送数据报进而实现网络的通信)

 

InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)协议。

  1 package zhang;
  2 
  3  
  4 
  5 import java.io.BufferedReader;
  6 
  7 import java.io.IOException;
  8 
  9 import java.io.InputStream;
 10 
 11 import java.io.InputStreamReader;
 12 
 13 import java.net.InetAddress;
 14 
 15 import java.net.MalformedURLException;
 16 
 17 import java.net.URL;
 18 
 19 import java.net.UnknownHostException;
 20 
 21 import java.util.Arrays;
 22 
 23  
 24 
 25 /**
 26 
 27  * InetAddress类*/
 28 
 29  
 30 
 31 public class Main {
 32 
 33      public static void main(String [] args) throws UnknownHostException {
 34 
 35           // TODO Auto-generated constructor stub
 36 
 37           //获取本机的IP地址
 38 
 39           InetAddress address=InetAddress.getLocalHost();
 40 
 41           System.out.println("计算机名:"+address.getHostName());
 42 
 43           System.out.println("IP地址:"+address.getHostAddress());
 44 
 45           byte [] bytes=address.getAddress();
 46 
 47           System.out.println("字节数组形式的IP"+Arrays.toString(bytes));
 48 
 49           System.out.println(address);//直接输出InetAddress对象
 50 
 51           //根据主机名获取InetAddress实例
 52 
 53           InetAddress address2=InetAddress.getByName("www.baidu.com");
 54 
 55           System.out.println(address2);
 56 
 57           //(URL) Uniform(统一的) Resource(资源) Locator(定位符,探测器)
 58 
 59           //表示Internet上某一资源的地址
 60 
 61           /**
 62 
 63           * URL由两部分组成:协议名称和资源名称,中间用冒号隔开。http://www.baidu.com
 64 
 65           *
 66 
 67           * */
 68 
 69           //创建URL的实例
 70 
 71           try {
 72 
 73                URL imooc=new URL("http://www.imooc.com");
 74 
 75                //根据已有的URL创建新的URL
 76 
 77                //?后面的是传递的参数其中#后面的是锚点
 78 
 79                URL url=new URL(imooc,"/index.html?username=tom#test");
 80 
 81                System.out.println("协议:"+url.getProtocol());//获取协议信息
 82 
 83                System.out.println("主机:"+url.getHost());//主机信息
 84 
 85                //如果未指定端口号则根据协议的不同使用默认的端口号 http使用的是80端口
 86 
 87                //getPort返回值为-1
 88 
 89                System.out.println("端口:"+url.getPort());//获取端口号
 90 
 91                /**
 92 
 93                *      协议:http    
 94 
 95                *     主机:www.imooc.com
 96 
 97                *     端口:-1
 98 
 99                * */
100 
101                System.out.println("文件路径:"+url.getPath());
102 
103                System.out.println("文件名:"+url.getFile());
104 
105                System.out.println("相对路径"+url.getRef());
106 
107                System.out.println("查询字符串"+url.getQuery());
108 
109                /**
110 
111                * 文件路径:/index.html
112 
113                * 文件名:/index.html?username=tom
114 
115                * 相对路径test
116 
117                * 查询字符串username=tom
118 
119                * */
120 
121           } catch (MalformedURLException e) {
122 
123                // TODO Auto-generated catch block
124 
125                e.printStackTrace();
126 
127           }
128 
129           /**
130 
131           * 使用URL读取网页内容
132 
133           * 1.通过URL对象的openStream()方法可以得到指定资源的输入流
134 
135           * 2.通过输入流可以读取、访问网络上的资源
136 
137           * */
138 
139           //创建URL实例
140 
141           try {
142 
143                URL url2=new URL("http://www.baidu.com");
144 
145               
146 
147                InputStream is=url2.openStream();
148 
149                //将字节输入流转换成字符输入流
150 
151                InputStreamReader isr=new InputStreamReader(is,"utf-8");
152 
153                //为字符输入流添加缓冲,提高效率
154 
155                BufferedReader bis=new BufferedReader(isr);
156 
157                String data=http://www.mamicode.com/bis.readLine();//读取数据
158 
159               
160 
161                while(data!=null){//循环读取数据
162 
163                     System.out.print(data);//输出数据
164 
165                     data=http://www.mamicode.com/bis.readLine();
166 
167                }//读取到的是百度首页的源代码
168 
169           } catch (MalformedURLException e) {
170 
171                // TODO Auto-generated catch block
172 
173                e.printStackTrace();
174 
175           } catch (IOException e) {
176 
177                // TODO Auto-generated catch block
178 
179                e.printStackTrace();
180 
181           }    
182 
183      }
184 
185 }

 

Java中的网络支持InetAddress&URL