网络编程

任务

 

目标

 

第一节:网络编程基础

1.1 计算机网络

​ 所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源

1.2 网络编程

​ 所谓网络编程,指的就是在同一个网络中不同机器之间的通信

第二节:计算机之间通信需要的条件

2.1 IP地址

​ IP地址指的是互联网地址(Internet Protocol Address ) ,是联网设备与互联网之间的唯一标识,在同一个网段中,IP地址是唯一的

​ IP地址是数字型的,是一个32位的整数,通常将其分成4个8位的二进制数,每8位之间用圆点隔开, 每个8位整数可以转换为一个0~255的十进制整数,例如:202.9.128.88

​ 分为IPV4和IPV6

​ IP地址分类

​ A类:保留给政府结构,1.0.0.1 ~ 126.255.255.254

​ B类:分配给中型企业,1.0.0.1 ~ 126.255.255.254

​ C类:分配给任何需要的个人,192.0.0.1 ~ 223.255.255.254

​ D类:用于组播,224.0.0.1 ~ 239.255.255.254

​ E类:用于实验,240.0.0.1 ~ 255.255.255.254

​ 环回地址:127.0.0.1,指本地机,一般用于测试使用

​ IP地址可以唯一的确定网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口

2.2 端口

​ 数据的发送和接收都需要通过端口出入计算机,端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能两个程序占用同一个端口

​ 端口号的取值范围:0~65535

​ 端口分类:

​ 公认端口:0~1023

​ 注册端口:1025~49151

​ 动态或私有端口:1024~65535

​ 常用端口:

​ mysql:3306

​ oracle:1521

​ tomcat:8080

2.3 通信协议

​ 需要通信的设备之间需要实现相同的通信协议

​ 网络分层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

​ 通信协议分类:

​ 传输层协议:TCP和UDP

​ 网络层IP协议:IPV4和IPV6,互联网协议

​ 应用层协议:HTTP

第三节:相关类的使用

3.1 InetAddress类

​ Java提供了InetAddress类来代表ip地址,是对ip地址的抽取和封装,有两个子类:Inet4Address,Inet6Address,分别表示IPv4和IPv6

​ 常用方法:

 
3.2 URLEncoder类和URLDecoder类

​ URLEncoder类和URLDecoder类用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的转换

 

第四节:基于TCP的网络编程

4.1 概念

​ TCP,Transmission Control Protocol,传输控制协议,基于字节流的传输层通信协议

​ 特点:

​ a.安全的

​ b.面向链接的

​ c.面向链接的

​ d.传输数据大小限制,一旦连接建立,双方可以按统一的格式传输大的数据

​ TCP的三次握手

​ a.客户端向服务端发送一个请求

​ b.服务端收到请求后,回客户端一个响应

​ c.客户端向收到服务端的响应后,回服务端一个确认信息

4.2 Socket通信模型Socket通信模型

第五节:Socket和ServerSocket

5.1 客户端发送消息,服务端接收消息

​ 客户端

 

​ 服务端

 
5.2 客户端发送消息,服务端回复消息

​ 客户端

 

​ 服务端

 
5.3 客户端上传文件到服务端【以图片为例】

​ 客户端

 

​ 服务端

 
5.4 客户端从服务端下载文件【以图片为例】

​ 客户端

 

​ 服务端

 
5.5 多个客户端和一个服务端通信【线程版本】

​ 客户端

 

​ 服务端

 
5.6 TCP实现注册登录

​ 客户端

 

​ 服务端

 

第六节:UDP编程(了解)

6.1 概念

​ User Datagram Protocol的简称,用户数据包协议,提供面向事务的简单不可靠信息传送服务

​ 特点:

​ a.不安全

​ b.无连接

​ c.效率高

​ d.UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内

6.2 DatagramSocket和DatagramPacket

发送方

 

接收方

 

第七节:课前默写

设计程序,使用多线程模拟3个售票员售卖50张票的功能

第八节:作业

实现一对多的简易聊天

第九节:面试题

1.简述网络编程需要的条件

2.简述UDP和TCP之间的区别