java TCP/IP Socket编程-----基本套接字-----常用API方法解释-----笔记4

概述:

java已经提供一些非常方便的API,但是我们需要熟悉它们。

1.InetAddress类

static InetAddress[] getAllByName (String host)  一个名称可以关联多个数字地址

static InetAddress getByName(String host) 根据名称获取数字地址

static InetAddress getLocalHost() 获取本地地址

byte[] getAddress()获取二进制的地址,Inet4Address 该数组长为4个字节,而Inet6Address 数组的长度为16字节

public class InetAddressDemo {
	
	public static void main(String[] args) {
		
		try {
			//1.以百度为例获取对应的地址
			InetAddress[] inets = InetAddress.getAllByName("www.baidu.com");
			for (int i = 0; i < inets.length; i++) {
				System.out.println(inets[i].getHostAddress());
			}
			//2.以百度为例获取对应的地址,获取第一个地址,获取地址和数字
			InetAddress inet = InetAddress.getByName("www.baidu.com");
			System.out.println(inet);
			//3.获取本地地址
			InetAddress localInet= InetAddress.getLocalHost();
			System.out.println(localInet);
			//4.获取本地地址的二进制数组
			byte [] localInetB = localInet.getAddress();
			int count =1;
			for (int s = 0; s < localInetB.length; s++) {
				System.out.println("字节"+(count++) +":  "+ localInetB[s]);
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
效果为:

115.239.211.112
115.239.210.27
www.baidu.com/115.239.211.112
USER-20170608EQ/192.168.9.157
字节1:  -64
字节2:  -88
字节3:  9
字节4:  -99

字符串相关:

String toString();  返回字符串和数字型地址

String getHostAddress() 数字型地址

String getHostName()   返回最初通过主机创建名字,解析失败返回数字地址

String getCanonicalHostName()  尝试获取主机的全称

package com.tcp.ip.chapter2;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @author Administrator
 *
 */
public class InetAddressDemo {
	
	public static void main(String[] args) {
		//1.以百度为例获取对应的地址
		InetAddress[] inets;
		try {
			inets = InetAddress.getAllByName("www.baidu.com");
			for (int i = 0; i < inets.length; i++) {
				System.out.println("toString():  " + inets[i].toString());
				System.out.println("getHostAddress():  " +inets[i].getHostAddress());
				System.out.println("getHostName():  " +inets[i].getHostName());
				System.out.println("getCanonicalHostName():  " +inets[i].getCanonicalHostName());
			}
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
效果:

toString():  www.baidu.com/61.135.169.125
getHostAddress():  61.135.169.125
getHostName():  www.baidu.com
getCanonicalHostName():  61.135.169.125
toString():  www.baidu.com/61.135.169.121
getHostAddress():  61.135.169.121
getHostName():  www.baidu.com
getCanonicalHostName():  61.135.169.121




检测属性:

boolean isAnyLocalAddress()  是否属于本地地址

boolean istLinkLocalAddress()本地链接地址

boolean istLoopbackAddress() 本地回环地址

boolean isMulticastAddress() 多播地址

boolean isMCGlobal()

boolean isMCLinkLocal()

boolean isMCNodeLocal()

boolean isMCOrgLocal()

boolean isMCSiteLocal()

boolean isReachable(int timeout)   持续发送报文,直到超时

boolean isReachable(NetworkInterface netif, int ttl, int timeout)  规定一定时间内联系指定主机,也有超时限制

package com.tcp.ip.chapter2;

import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;

/**
 * @author Administrator
 *
 */
public class InetAddressDemo {
	
	public static void main(String[] args) {
		//1.以百度为例获取对应的地址
		InetAddress[] inets;
		InetAddress inet;
		try {
			inets = InetAddress.getAllByName("www.baidu.com");
			inet = InetAddress.getByName("www.taobao.com");
			//根据地址获取接口
			NetworkInterface	netInet = NetworkInterface.getByInetAddress(inet);
			for (int i = 0; i < inets.length; i++) {
				System.out.println("isAnyLocalAddress():  " + inets[i].isAnyLocalAddress());
				System.out.println("isLinkLocalAddress():  " +inets[i].isLinkLocalAddress());
				System.out.println("isLoopbackAddress():  " +inets[i].isLoopbackAddress());
				System.out.println("isMulticastAddress():  " +inets[i].isMulticastAddress());
				System.out.println("isMCGlobal():  " + inets[i].isMCGlobal());
				System.out.println("isMCLinkLocal():  " +inets[i].isMCLinkLocal());
				System.out.println("isMCNodeLocal():  " +inets[i].isMCNodeLocal());
				System.out.println("isMCOrgLocal():  " +inets[i].isMCOrgLocal());
				//表示是否在42毫秒内连上目标
				System.out.println("isReachable():  " +inets[i].isReachable(42));
				//表示是否通过连同淘宝接口到达 百度接口地址
				System.out.println("isReachable():  " +inets[i].isReachable(netInet,10,100));
			}
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
效果:

isAnyLocalAddress():  false
isLinkLocalAddress():  false
isLoopbackAddress():  false
isMulticastAddress():  false
isMCGlobal():  false
isMCLinkLocal():  false
isMCNodeLocal():  false
isMCOrgLocal():  false
isReachable():  true
isReachable():  true
isAnyLocalAddress():  false
isLinkLocalAddress():  false
isLoopbackAddress():  false
isMulticastAddress():  false
isMCGlobal():  false
isMCLinkLocal():  false
isMCNodeLocal():  false
isMCOrgLocal():  false
isReachable():  true
isReachable():  true

2.NetworkInterface类

static Enumeration <NetworkInterface>  getNetworkInterfaces() 获取该主机的所有的接口

static NetworkInterface getByInetAddress(InetAddress addr) 通过地址获取接口

static NetworkInterface getByName (String name)  通过名称获取接口

Enumeration<InetAddress> getInetAddresses() 获取接口对应的地址

String getName() 获取接口名称

String getDisplayName() 获取接口的展示的名称

getName()方法返回一个接口(interface)的名字(不是主机名)。这个名字由字母字符串加上一个数字组成,如eth0。在很多系统中,回环地址的名字都是lo0。

package com.tcp.ip.chapter2;

import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

/**
 * @author Administrator
 *
 */
public class InetAddressDemo {
	
	public static void main(String[] args) {
		//1.以百度为例获取对应的地址
		InetAddress inet;
		try {
			inet = InetAddress.getByName("localhost");
			//根据地址获取接口
			NetworkInterface	netInet = NetworkInterface.getByInetAddress(inet);
			
			System.out.println("getName() : " + netInet.getName());
			System.out.println("getDisplayName() : " + netInet.getDisplayName());
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
效果:

getName() : lo
getDisplayName() : Software Loopback Interface 1


简要介绍常用的API


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值