一、网络编程三要素:IP、端口号、协议
1、IP
- 每个设备在网络中的唯一标识
- 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
- 本地回路地址:127.0.0.1 255.255.255.255是广播地址
- IPV4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。
- IPV6:8组,每组4个16进制数
例如:1a2b : 0000 : aaaa : 0000 : 0000 : 0000 : aabb : 1f2f
2、端口号
- 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。
- 端口号范围 0-65535
- 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。
- 常用端口
mysql : 3306
oracle : 1521
web : 80
tomcat : 8080
QQ : 4000
feiQ : 2425
3、协议
为计算机网络中进行数据交换而建立的规则、标准或约定的集合
- UDP(User Datagram Protocol):用户数据报协议
面向无连接,数据不安全,速度快。不区分客户端和服务端。 - TCP(Transmission Control Protocol): 传输控制协议
面向连接的、可靠的、基于字节流的传输层通信协议。数据安全,速度略低,区分客户端和服务端。
UDP 类似发短信,不管接收方在不在或者是否存在,都能发出去。
TCP 类似打电话,接收方在的时候才能连接成功。
二、Socket
Socket套接字概述
- 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
- 通信的两端都有 Socket
- 网络通信其实就是 Socket 间的通信
- 数据在两个 Socket 间通过 IO流 传输
- Socket 在应用程序中创建,通过一种绑定机制与驱动程序建立连接,告诉自己所对应的 IP 和 port
三、UDP 传输
- 1、发送Send
创建 DatagramSocket,随机端口号;
创建 DatagramPacket,指定数据、长度、地址、端口
使用 DatagramSocket 发送 DatagramPacket
关闭 DatagramSocket - 2、接收Receive
创建 DatagramSocket,指定端口号
创建 DatagramPacket,指定数组、长度
使用 DatagramSocket 接收 DatagramPacket
关闭 DatagramSocket
从 DatagramPacket 中获取数据 - 3、接收方获取 ip 和端口号
String ip = packet.getAddress().getHostAddress();
int port = packet.getPort();