网络通信的三要素
要素一,ip地址,设备在网络中的地址,是唯一标识
- ipv4协议。32bit 4字节
- ipv6 128bit 16字节。
ip地址形式
-
公网地址
-
局域网地址
192.168是常见的局域网开头标识。局域网的范围从192.168.0.0~192.168.255.255
本地计算机ip地址:127.0.0.1 或者是localhost:称为回送地址也可称本地回环地址只会寻找当前本机
ip常用命令
- ipconfig:查看本机ip地址
- ping ip地址:检查网络是否连通。
InetAddress ip地址对象类
//
try {
// 返回本主机的地址对象
System.out.println(InetAddress.getLocalHost());
// 返回指定主机的ip地址对象。参数是域名或者是ip地址
InetAddress ip = InetAddress.getByName("www.baidu.com");
// 获取ip地址的主机名
System.out.println(ip.getHostName());
// 返回ip地址的ip
System.out.println(ip.getHostAddress());
// 在指定的时间毫秒内连接对应的主机
boolean bo = ip.isReachable(2000);
System.out.println(bo ? "在1毫秒内接通":"在1毫秒内没有接通");
} catch (UnknownHostException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
要素二,端口号,应用程序在设备中的唯一标识。被规定为一个16位的二进制.范围是0~65535
端口类型
- 周知端口:0-1023 被预先定制的知名应用占用。如http 80 ftp 21
- 注册端口:1024~49151 分配给用户进程或者某些应用程序。比如Tomact8080 MySql 3306
- 动态端口:49152~65535,一般是不固定分配给某个进程是动态分配的。
要素三, 协议,数据在网络传输中的规则,常见的协议有UDP协议和TCP协议。
UDP的使用。
DatagramSocket client = new DatagramSocket();
// 创建数据包对象,封装数据
/**
* 封装发送的数据。
* 数据的大小
* 发送端的ip地址,
* 端口号
*/
InetAddress service = InetAddress.getLocalHost();
byte[] data = "这是我的消息".getBytes();
DatagramPacket packet = new DatagramPacket(data,data.length, service, 8888);
// 发送数据出去
client.send(packet);
// 发送玩数据之后可以关掉管道
client.close();
创建接收端对象
DatagramSocket socket = new DatagramSocket(8888);
byte[] buffer = new byte[1024 * 64];
// 创建数据包对象,接收数据
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
// 等待接收数据
socket.receive(packet);
// 获取接收到的数据的大小
int size = packet.getLength();
String str = new String(buffer, 0,size);
System.out.println("收到数据" + str);