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

来源:互联网 发布:mysql安装教程 windows 编辑:程序博客网 时间:2024/06/10 18:54

概述:

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 blocke.printStackTrace();}}}
效果为:

115.239.211.112115.239.210.27www.baidu.com/115.239.211.112USER-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 blocke.printStackTrace();}}}
效果:

toString():  www.baidu.com/61.135.169.125getHostAddress():  61.135.169.125getHostName():  www.baidu.comgetCanonicalHostName():  61.135.169.125toString():  www.baidu.com/61.135.169.121getHostAddress():  61.135.169.121getHostName():  www.baidu.comgetCanonicalHostName():  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");//根据地址获取接口NetworkInterfacenetInet = 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
效果:

isAnyLocalAddress():  falseisLinkLocalAddress():  falseisLoopbackAddress():  falseisMulticastAddress():  falseisMCGlobal():  falseisMCLinkLocal():  falseisMCNodeLocal():  falseisMCOrgLocal():  falseisReachable():  trueisReachable():  trueisAnyLocalAddress():  falseisLinkLocalAddress():  falseisLoopbackAddress():  falseisMulticastAddress():  falseisMCGlobal():  falseisMCLinkLocal():  falseisMCNodeLocal():  falseisMCOrgLocal():  falseisReachable():  trueisReachable():  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");//根据地址获取接口NetworkInterfacenetInet = NetworkInterface.getByInetAddress(inet);System.out.println("getName() : " + netInet.getName());System.out.println("getDisplayName() : " + netInet.getDisplayName());} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
效果:

getName() : logetDisplayName() : Software Loopback Interface 1


简要介绍常用的API


原创粉丝点击