1. 网络编程概念
1.1 软件结构
- C/S结构(Client/Server):客户端与服务器结构;
- B/S结构(Browser/Server):浏览器与服务器结构;
1.2 网络编程三要素
1.2.1 IP地址
- 互联网协议地址(Internet Protocol Address),网络设备的唯一标识
- IP地址的两种常用的地址形式:
- IPv4: 32位的二进制数,分为4个字节,格式为
a.b.c.d
,每个字节范围是0~255; - IPv6: 128位的二进制数,每16个字节一组,共八组,格式为
a:b:c:d:e:f:g:h
,每个字节范围是0~255.
- IPv4: 32位的二进制数,分为4个字节,格式为
1.2.2 端口号
- 设备中进程的唯一标识,实际上是一个十进制的整数。
- 端口号是用两个字节表示的整数,取值范围0~65535。
- 注意:0~1024一下的端口号是系统保留使用的,程序员要使用1024以上的端口号。
1.2.3 通信协议
- 规定计算机之间数据传输的格式。
*通信协议中两种常用的协议:
TCP(Transmission Control Prorocol): 传输控制协议。TCP是面向连接的通信协议,在发送端和接收端监理逻辑连接,再传输数据
-
- 特点:保证传输数据的安全
UDP(User Datagram Protocol): 用户数据报包协议。UDP是面向无连接的协议,是不可靠协议,传输速度快,但是容易丢失数据
根据Ip找主机,根据端口号找程序,根据协议确定传输数据的格式
1.3 InetAddress类的概述
- 一个该类对象代表一个IP地址。
1.3.1常用方法
-
(无构造方法)
-
静态方法:
- public static InetAddress getLocalHost() 获得本地主机IP地址对象(主机名/IP地址字符串); - public static InetAddress getName() 根据主机名或IP地址字符串获得IP地址对象。
-
成员方法
- public String getHostName():获得主机名; - public String getHostAddress():获得IP地址字符串。
2. UDP通信程序
2.1 概述
-
UDP在数据传输时,数据的发送端和接收端不建立逻辑连接。
-
特点:
-
面向无连接协议;
-
资源消耗少,通信效率高,但不可靠;
-
只负责发送,发送过程不会确认接收端是否接收到;
-
基于数据包传输数据:将需发送的数据、源和接收端IP地址、端口号等信息封装成数据包发送;
-
每个数据包的大小限制在64K内;
-
-
使用场景:
- 即时通讯(如qq)
- 在线视频(如直播)
- 网络语音通话(如微信语音聊天)
2.2 UDP通讯使用的类
2.2.1 DatagramPacket类(数据包)
2.2.1.1 概述及作用
- 用来封装发送端或接收端要发送或接收的数据,是数据包对象
2.2.1.2 构造方法
- 创建发送端数据包:
- DatagramPacket(byte[] buf, int length, InetAddress address, int port)
用于创建发送端数据包对象。
其中:buf:字节数组,封装要发送的数据
length:要发送的内容长度,单位:字节
address:接收端的ip地址对象
port:接收端的端口号
- 创建接收端数据包:
- DatagramPacket(byte buf[],int length) : 用于创建接收端数据包对象
其中:buf:用于接收数据的数组
length: 能够接受内容的长度,即buf数组的长度,单位:字节
2.2.1.2 常用成员方法
- public int getLength():获得发送端实际发送的字节数或接收端实际接收到的字节数;
- public int getPort():获得发送端或接收端端口号
2.2.2 DatagramSocket类(发送数据包)
2.2.2.1 概述及作用
- DatagramSocket类实例对象可用来发送和接收数据包对象
2.2.2.2 构造方法
- DatagramSocket():创建发送端的发送对象(端口号随机生成)
- DatagramSocket(int port):根据指定端口号创建Socket对象(一般用在接收端)
2.2.2.3 常用成员方法
- public void send(</