网络编程-相关概念 【了解】
网络编程-基于UDP协议 【重点】
网络编程-基于TCP协议 【重点】
网络编程-相关概念
什么是网络编程
也可以称为Socket编程
在同一网络下,在通信协议的作用下,编写的程序可以实现不同的计算机之间的进行数据传输。
网络编程的三要素 【重点】
IP
设备在网络中唯一标识
分类:
IPV4
4个字节组成(总共32个二进制位),为了方便书写和记忆,使用“点分十进制法”进行表示
使用点分成4段,每一段占1个字节,每一段转成十进制最大为值255
特殊的IP:
255.255.255.255 广播ip地址
127.0.0.1/localhost 本机地址
IPV6
16个字节组成(总共128个二进制位),为了方便书写和记忆,使用“冒分十六进制法”进行表示
使用冒号分成8段,每一段占2个字节
ip相关的dos命令
ipconfig 查看ip地址
ping ip地址 检查是否和指定的ip连通
InetAddress类
用于封装ip地址的
常用方法:
static InetAddress getByName(String host)
* String host
可以传递主机名也可以传递ip地址,我们今天主要是传递ip地址
String getHostAddress():获取ip
String getHostName():获取主机名
端口号
应用程序(软件)在设备中的唯一标识
范围:0~65535
0~1024建议不使用,给操作系统、知名服务等预留的端口号
常见的端口号:
8080 tomcat服务的默认端口号
80 Http协议的默认端口号
3306 MySQL的默认端口号
...
协议
定义数据传输的规则
UDP:面向无连接,速度稍快,数据不安全易丢失,发送的数据大小有限制(64K)
TCP:面向连接,速度稍慢,数据安全不会丢失,发送的数据没有大小限制
网络编程-基于UDP协议
发送端
1、创建DatagramSocket对象
2、创建DatagramPacket对象
3、发送
4、释放资源
接收端
1、创建DatagramSocket对象
2、创建一个空包裹用于装发送过来的数据
3、接收
4、处理数据
5、释放资源
DatagramSocket类
构造方法
DatagramSocket() :默认分配端口号
DatagramSocket(int port)
成员方法
void send(DatagramPacket p)
void receive(DatagramPacket p)
DatagramPacket类
构造方法
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
* 参数
byte[] buf:发送的数据
int length:发送的数据长度
InetAddress address:接收端的ip地址
int port:接收端的端口号
DatagramPacket(byte[] buf, int length)
成员方法
byte[] getData():获取包裹中的数据,将包裹对象中的数组返回
int getLength():获取接收到数组中的有效字节个数
InetAddress getAddress():获取发送端的ip
int getPort():获取发送端的端口号
三种通信方式
单播
组播
组播地址范围:
224.0.0.0 ~ 239.255.255.255
224.0.0.0 ~ 224.0.0.255是预留的组播地址不建议使用
224.0.1.0 ~ 239.255.255.255可用
广播
发送端和接收端的代码和单播方式一模一样
只是发送端发送的时候,指定的ip改为255.255.255.255
网络编程-基于TCP协议
客户端
步骤:
1、创建客户端对象
2、获取输出流
3、通过流写出数据
4、释放资源
服务器端
步骤:
1、创建服务器端对象
2、接收客户端的连接
3、获取输入流
4、通过流读取数据
5、释放资源
通过IO流来进行数据的传输
Socket类
客户端套接字
构造方法
Socket(String host, int port)
Socket(InetAddress address, int port)
* 参数
String host / InetAddress address表示的都是服务器端的ip
int port表示的是服务器端的端口号
成员方法
InputStream getInputStream() :获取输入流对象
OutputStream getOutputStream() :获取输出流对象
在客户端获取的输入流可以读取服务器端发送的数据
在客户端获取的输出流可以向服务器端发送数据
ServerSocket类
服务器端套接字
构造方法
ServerSocket(int port)
成员方法
Socket accept()
* InputStream getInputStream() :获取输入流对象
* OutputStream getOutputStream() :获取输出流对象
在服务器端获取的输入流可以读取客户器端发送的数据
在服务器端获取的输出流可以向客户器端发送数据