1.网络编程概念
1.计算机网路: 在不同地区 不同设备 进行资源的共享 实现互联网信息化(计算机信息化时代)
2.网络编程的三要素: IP 端口号 协议
3.IP
IP:在计算机网络中 每一台设备的唯一的表标识
分类: IP4 IP6
IP4 是由4个字节的二进制组成 0101 0000 0101 0101 不便于记忆 ==>IP4是由十进制组成
每一个十进制是以.进行分割 192.168.1.103 子网:10.10.11.161(重点)
IP6:是由16进制组成的 目前国内使用的比较少
fe80::5d1:f82d:ce84:3368%13
查看ip地址
windows+r
输入cmd
输入指令:ipconfig
检查服务器(电脑)是否可以连接: ping ip地址 不丢包(不丢数据)
指令:ping + ip地址
4.端口号:
端口号:端口号是每一个进程的唯一的标识 正在运行的程序通信的唯一的标识
端口号可以自己进行设置 也可以由系统来进行分配 端口号的范围是0-65535
系统的端口号 1-1024 范围之内 设置端口号的时候 不要与系统端口号进行冲突
常见的默认的端口号:
mysql:3306
qq:4000
tomcat:8080
5.协议
协议:不同设备进行交互的时候锁遵循的规范 必须遵循这个规范才能进行有效的数据传输
常见的协议:
TCP 面向连接的协议 三次握手 进行数据交互 特点: 安全性高 不会丢失数据 效率低
UDP 面向无连接的协议 特点:安全性低(丢失数据) 效率高(群发短信)
HTTP 一次性连接的协议 大部分web项目都需要使用这个协议 效率高 数据的缓存 不安全
HTTPS =HTTP+SSL证书 SSL证书:用于对数据传输的时候进行加密 安全性高
6.TCP的三次握手
1.客户端发送请求给服务器
2.服务器收到请求 通知客户端
3.进行数据传输
7.UDP协议
通过包来实现群发数据
8.http协议
一次性连接
2.InetAddress
1.此类表示互联网协议 (IP) 地址
2.常规的方法
方法的名称 | 方法的说明 |
public static InetAddress getByName(String host) | 在给定主机名的情况下确定主机的 IP 地址 |
public String getHostName() | 获取此 IP 地址的主机名 |
public String getHostAddress() | 返回 IP 地址字符串(以文本表现形式) |
3.基于Socket进行通信(客户端)
1.Socket 类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点
两个设备可以进行通信与数据传输
2.常用的构造方法
方法的名称 | 方法的说明 |
public Socket(String host, int port) | 创建一个流套接字并将其连接到指定主机上的指定端口号 |
3.常用的方法
方法的名称 | 方法的说明 |
public InputStream getInputStream() | 返回此套接字的输入流 |
public OutputStream getOutputStream() | 返回此套接字的输出流 |
public void shutdownOutput() | 刷新(flush()方法功能是类似) |
public void close() | 关闭资源 |
4.基于ServerSocket进行通信(服务器)
1.ServerSocket 此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
2.常用的构造方法
方法的名称 | 方法的说明 |
public ServerSocket(int port) | 创建绑定到特定端口的服务器套接字 |
3.常规的方法
方法的名称 | 方法的说明 |
public Socket accept() | 侦听并接受到此套接字的连接 |
5.基于Socket进行-简单的文本进行交互
客户端:
实例化Socket对象
获取输入流 输出流
发送消息
刷新
接收服务器的消息
关闭资源
服务器:
实例化ServerSocket对象
进行监听
获取输入流 输出流
接收数据
发送数据
刷新
关闭资源
6.基于Socket进行-通信多线程解决方案
客户端:
实例化Socket对象
获取输入流 输出流
发送消息
刷新
接收服务器的消息
关闭资源
服务器:
实例化ServerSocket对象
循环进行监听
实例化线程
将服务器的操作放到线程中
(获取输入流 输出流
接收数据
发送数据
刷新
关闭资源)
启动线程
7.基于UDP进行通信
1.DatagramSocket 此类表示用来发送和接收数据报包的套接字
2.将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收 群发
3.构造方法
方法 的名称 | 方法的说明 |
public DatagramSocket() | 构造数据报套接字并将其绑定到本地主机上任何可用的端口 |
public DatagramSocket(int port) | 创建数据报套接字并将其绑定到本地主机上的指定端口 |
4.常用方法
方法的名称 | 方法的说明 |
public void receive(DatagramPacket p) | 从此套接字接收数据报包 |
public void send(DatagramPacket p) | 从此套接字发送数据报包 |
5.DatagramPacket 此类表示数据报包
6.常用的构造方法
方法的名称 | 方法的说明 |
public DatagramPacket(byte[] buf, int length) | 构造 DatagramPacket,用来接收长度为 length 的数据包 |
public DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) | 构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号 |
7.常用的方法
方法的名称 | 方法的说明 |
public byte[] getData() | 返回数据缓冲区 |
8.
客户端
实例化DatagramSocket
构建一个包裹对象
发送包裹
服务端