java InetAddress类的创建和使用
前阵子学习到一些网络传输的问题,现在总结一下。
说在前面:
1.要实现网络传输,需要考虑的问题有哪些?
1.1如何才能准确的定为网络上的一台主机?
1.2如何才能进行可靠的、高效的数据传输?
2.java如何实现的网络通信
2.1使用IP地址—定位一台主机, 使用端口号—定位一个应用。 满足需求的可以采用——>>InetAddress类
如何创建一个InetAddress的对象?geByName(***);
比如下面的语句:
InetAddress inet = new InetAddress.getByName("127.0.0.1");
>如何获取本机的一个InetAddress对象?可以使用getLocalHost()
>获取域名: getHostName()
>获取ip: getHostAddress
2.2 对应有协议 应用层 传输层 网络层 数据链路
下面会说说对于TCP和UDp协议的基本特点:
TCP协议:
使用TCP协议前,须先建立TCP连接,形成传输数据通道
传输前,采用“三次握手”方式,是可靠的
TCP协议进行通信的两个应用进程:客户端、服务端
在连接中可进行大数据量的传输
传输完毕,需释放已建立的连接,效率低UDP协议:
将数据、源、目的封装成数据包,不需要建立连接
每个数据报的大小限制在64K内
因无需连接,故是不可靠的
发送数据结束时无需释放资源,速度快
后面会有针对的 TCP编程、UDP编程、URL编程的对应总结。这里就先说到这里吧。
下面附上InetAddress类的创建和使用:
import java.net.InetAddress;
/* 网络通信:第一要素IP找到
* InetAddress:位于java.net的包下
* 1.InetAddress用来代表IP地址,一个InetAddress的对象就代表一个IP地址
* 2.如何创建InetAddress的对象?
* 3.getHostName():获取域名
* 4.getHostAddress():获取ip地址
*/
public class TestInetAddress {
public static void main(String[] args) throws Exception {
// //InetAddress的对象的创建
// InetAddress inet = InetAddress.getByName("www.baidu.com");//域名或者ip
// inet = InetAddress.getByName("");//IP
// System.out.println(inet);
// //两个方法
// System.out.println(inet.getHostName());//域名
// System.out.println(inet.getHostAddress());//IP
//访问本机ip
InetAddress inet1 = InetAddress.getLocalHost();
System.out.println(inet1);
System.out.println(inet1.getHostName());
System.out.println(inet1.getHostAddress());
}
}