网络编程day1
1、InetAddress类
java.net
类 InetAddress
java.lang.Object 继承者
java.net.InetAddress
- 所有已实现的接口:
- Serializable
- 直接已知子类:
- Inet4Address, Inet6Address
IP地址:定位一个节点:计算机。路由设备。通讯设备等
InetAddress类用于标识网络上的硬件资源,标识互联网协议(IP)地址。
常用的两个静态方法
getByName() ---通过域名| IP地址-->获取InetAddress 对象
getLocalHost() --获取本地主机
常用的两个 两个成员方法:
getHostName() ---返回主机名
getHostAddress() ---返回地址
测试类:
1 package 本地信息; 2 3 import java.net.InetAddress; 4 import java.net.UnknownHostException; 5 6 /** 7 * IP地址:定位一个节点:计算机。路由设备。通讯设备等 8 * 9 * InetAddress :多个静态方法: 10 * getByName() ---通过域名| IP地址-->获取InetAddress 对象 11 * getLocalHost() --获取本地主机 12 * 13 * 两个成员方法: 14 * getHostName() ---返回主机名 15 * getHostAddress() ---返回地址 16 * @author liuzeyu12a 17 * 18 */ 19 public class TestIP { 20 21 public static void main(String[] args) throws UnknownHostException { 22 23 //使用getLocalHost得到InetAddress对象 24 InetAddress addr = InetAddress.getLocalHost(); 25 System.out.println(addr.getHostName()); //返回本地主机名(虚拟网卡) 26 System.out.println(addr.getHostAddress()); //返回本地IP地址 27 28 //根据域名得到InetAddress对象 29 addr = InetAddress.getByName("www.163.com"); 30 System.out.println(addr.getHostName()); 31 System.out.println(addr.getHostAddress()); 32 33 //根据IP地址得到InetAddress对象 34 addr = InetAddress.getByName("112.51.121.165"); 35 System.out.println(addr.getHostAddress()); 36 System.out.println(addr.getHostName()); //无法解析域名 37 } 38 }
2、InetSocketAddress类
java.net
类 InetSocketAddress
java.lang.Object
继承者
java.net.SocketAddress
继承者
java.net.InetSocketAddress
- 所有已实现的接口:
- Serializable
public class InetSocketAddress extends SocketAddress
此类实现 IP 套接字地址(IP 地址 + 端口号)。它还可以是一个对(主机名 + 端口号),在此情况下,将尝试解析主机名。如果解析失败,则该地址将被视为未解析 地址,但是其在某些情形下仍然可以使用,比如通过代理连接。
它提供不可变对象,供套接字用于绑定、连接或用作返回值。
通配符 是一个特殊的本地 IP 地址。它通常表示“任何”,只能用于 bind
操作。
测试类:
1 package 本地信息; 2 3 import java.net.InetSocketAddress; 4 5 /**端口: 6 * 1、用于区分软件 7 * 2、2个字节 0~65535 UDP,TCP 8 * 3、同一个协议的端口不能冲突 9 * 4、定义端口的端口号越大越好 10 * 11 * InetSocketAddress构造器: 12 * new InetSocketAddress(IP地址|域名,端口); 13 * 方法: 14 * getPort() 15 * getHostName() 16 * getAddress() 17 * @author liuzeyu12a 18 * 19 */ 20 public class TestPort { 21 public static void main(String[] args) { 22 23 //包含端口 24 InetSocketAddress socketaddress1 = new InetSocketAddress("127.0.0.1",8080); 25 InetSocketAddress socketaddress2 = new InetSocketAddress("localhost",6666); 26 InetSocketAddress socketaddress3 = new InetSocketAddress("www.163.com",6666); 27 28 //socketaddress1 29 System.out.println(socketaddress1.getPort()); 30 System.out.println(socketaddress1.getHostName()); 31 System.out.println(socketaddress1.getAddress()); 32 33 //socketaddress2 34 System.out.println(socketaddress2.getPort()); 35 System.out.println(socketaddress2.getHostName()); 36 System.out.println(socketaddress2.getAddress()); 37 38 //socketaddress3 39 System.out.println(socketaddress3.getPort()); 40 System.out.println(socketaddress3.getHostName()); 41 System.out.println(socketaddress3.getAddress()); 42 } 43 }
3、URL类
URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址,协议名:资源名称
java.net
类 URL
java.lang.Object 继承者
java.net.URL
- 所有已实现的接口:
- Serializable
public final class URLextends Objectimplements Serializable
类 URL
代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
1 package 本地信息; 2 3 import java.net.MalformedURLException; 4 import java.net.URL; 5 6 /** 7 * URL: 统一资源定位器,互联网三大基石之一(html http),区分资源 8 * 包含: 9 * 1、协议 10 * 2、域名、计算机 11 * 3、端口:默认80 12 * 4、请求资源 13 * 例如: 14 * http://www.baidu.com/index.html?uname=lzy&age=18#a 15 * @author liuzeyu12a 16 * 17 */ 18 public class TestUrl { 19 20 public static void main(String[] args) throws MalformedURLException { 21 URL url = new URL("https://www.baidu.com:80" 22 + "/index.html?uname=lzy&age=18&pwd=123#a"); 23 24 //获取四个值 25 System.out.println("协议:"+url.getProtocol()); 26 System.out.println("域名|ip :"+url.getHost()); 27 System.out.println("端口 :"+url.getPort()); 28 System.out.println("请求资源:"+url.getPath()); 29 System.out.println("请求资源:"+url.getFile());//完整路径 30 31 //参数 32 System.out.println("参数:"+url.getQuery()); 33 34 //锚点 35 System.out.println("锚点:"+url.getRef());//在#后面的 36 } 37 }
具体的一些操作可查看jdk文档。