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
- java TCP/IP Socket编程-----基本套接字-----常用API方法解释-----笔记4
- java TCP/IP Socket编程-----基本套接字-----TCP套接字通讯-----笔记5
- java TCP/IP Socket编程-----基本套接字-----获取本机地址-----笔记3
- java TCP/IP Socket编程-----基本套接字-----UDP通讯-----笔记6
- Java TCP/IP协议笔记:基本套接字
- 【网络编程学习笔记01】Socket套接字编程(TCP/IP)
- Java套接字Socket编程--TCP参数
- Java套接字Socket编程--TCP参数
- Java套接字Socket编程--TCP参数
- 【C++】Winsock套接字编程(TCP/IP协议体系)常用API
- socket套接字TCP API
- Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
- Java TCP/IP Socket 编程 笔记
- 【socket】TCP套接字编程
- 4 基本TCP套接字编程
- UNIX 网络编程 卷一:套接字联网API 读书笔记(4) 第四章 基本TCP套接字编程
- 《UNIX网络编程》学习笔记:基本TCP套接字编程
- 基本TCP套接字编程
- Handler机制及原理探究
- 86-90.c++个人练习.
- 几种编译器
- 运维必看-GRE隧道配置实践!
- 实验五 JPEG原理分析及JPEG解码器的调试
- java TCP/IP Socket编程-----基本套接字-----常用API方法解释-----笔记4
- ZooKeeper之ZAB协议
- 汇编学习笔记 第一章
- HTTP请求的几种类型
- HTML及标签
- 柯洁失败了,AI+成下一个战场/智库2861
- 数组中只出现一次的数字
- 基于FPGA的VGA彩条发生器
- jquery 监听页面是否发生了变化