一、两台计算机进行网络通讯具备的条件
简单来说:地址、网络协议、端口号
- 要有地址,唯一的身份证和所在的位置
- 要有共同的语言,进行交流,就是网络协议
TCP :Transmission Control Protocol传输控制协议
IP : Internet Protocol 互联网协议
菜鸟教程TCP/IP篇 - 一台主机上可以运行很多的应用程序,每个应用程序要有标识,也就是端口号(端口号范围0-65535,其中1-1023为系统所保留(Http,FTP等)http:80 ftp:21 telnet:23)
二、Socket
IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通讯链路的终结点,是TCP和UDP的基础,也是网路通信的基础菜鸟教程Socket篇
三、Java中的网络支持
针对网络通信的不同层次,java提供的网络功能有四大类(API)
1、InetAddress : 用于标识网络上的硬件资源。(IP地址相关的信息)详情见官方开发文档
2、URL :统一资源定位符,通过URL可以直接读取或写入网络上的数据
3、Sockets : 使用TCP协议实现网络通信的Socket相关的类
4、Datagram : 使用UDP协议,将数据保存在数据报中,通过网络进行通信
四、练习InetAddress常用方法
public class Test01 {
public static void main(String[] args){
try {
//通过本地localHost来实例化InetAddress
InetAddress address=InetAddress.getLocalHost();
byte[] bytes =address.getAddress();//获取的是一个IP地址在内存中存在形式
System.out.println("在内存中存储的IP:"+Arrays.toString(bytes));
System.out.println("计算机的名称:"+address.getCanonicalHostName());
System.out.println("计算机名字:"+address.getHostName());
System.out.println("IP地址为:"+address.getHostAddress());
//下面计算机名称跟IP地址是自己电脑的,我用*号代替
//通过计算机名称来实例化InetAddress
InetAddress inetAddress =InetAddress.getByName("*****");
byte[] bytes1 =inetAddress.getAddress();//获取的是一个IP地址在内存中存在形式
System.out.println("在内存中存储的IP:"+Arrays.toString(bytes1));
System.out.println("计算机的名称:"+inetAddress.getCanonicalHostName());
System.out.println("计算机名字:"+inetAddress.getHostName());
System.out.println("IP地址为:"+inetAddress.getHostAddress());
//通过IP地址来实例化InetAddress对象
InetAddress address1 = InetAddress.getByName("***.***.*.*");
byte[] bytes2 =address1.getAddress();//获取的是一个IP地址在内存中存在形式
System.out.println("在内存中存储的IP:"+Arrays.toString(bytes2));
System.out.println("计算机的名称:"+address1.getCanonicalHostName());
System.out.println("计算机名字:"+address1.getHostName());
System.out.println("IP地址为:"+address1.getHostAddress());
//通过网络地址来实例化对象
InetAddress address2 =InetAddress.getByName("www.baidu.com");
byte[] bytes3 =address2.getAddress();//获取的是一个IP地址在内存中存在形式
System.out.println("在内存中存储的IP:"+Arrays.toString(bytes3));
System.out.println("计算机的名称:"+address2.getCanonicalHostName());
System.out.println("计算机名字:"+address2.getHostName());
System.out.println("IP地址为:"+address2.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
五、AndroidStudio执行main方法报错
点击这里查看解决方法
(感谢穷格万物,如有冒犯,请告知删除)