Java基础篇-网络编程

概述

如何建立在不同机器中的两个软件的通信?

(1)找到对方机器的IP地址

(2)通过对应用程序的数字标识,使得数据发送到对应的应用程序上。为了方便称呼这些数字标识,这些标识被称为端口。这些端口并非物理端口,只是逻辑端口

(3)定义通信规则(协议),才能双方通信。国际组织定义了通用TCP/IP协议

Snipaste_2019-09-17_20-28-11

网络模型

通信原理

数据传输的过程中需要对数据进行加入各类不同协议信息封装后发出,在接收方接收到数据后对数据进行拆包操作获取数据信息。

网络模型

为了划分网络在传输过程中每个层次对应的功能不同,而产生了网络模型。

(1)OSI模型

在数据传输的过程中,发送端将数据从应用层到物理层从上到下对数据进行打包封装。接收端对接收到的数据进行拆包操作,流程是从物理层到应用层,

(2)TCP/IP参考模型

在经过漫长的演变和发展,TCP/IP层将层次数量减少,将原来的OSI参考模型的几个层次合并为一个层次。

Snipaste_2019-09-17_22-22-41

IP地址

概念

IP地址用于标识网络中的设备名。但是IP地址不便记忆,在本机的回环地址中可以使用localhost代替127.0.0.1;在网络中使用主机名代替IP地址。如www.baidu.com中baidu就是主机名

java获取本机IP地址与名称

(1)导入net包

(2)使用包中的InetAddress类中的静态方法getLocalHost(),获取IP地址对象InetAddress;

(3)调用对象方法获取本机IP地址与名称

(4)抛出异常

Snipaste_2019-09-17_22-58-56

TCP和UDP

TCP和UDP是常用的两种通信协议,建立两端设备的通信。

UDP和TCP特点

UDP

(1)将数据及源和目的封装成数据包中,不需要建立连接

(2)每个数据包的大小限制在64K内

(3)因为是无连接所示是不可靠协议(容易丢包)

(4)不需要建立连接、速度快

常见应用:即时通信、网络视频会议、桌面共享等追求速度的场合

TCP

(1)建立连接,形成传输数据的通道

(2)在连接中进行大数据量传输

(3)通过三次握手完成连接,是可靠协议

​ 三次握手:发出第一次请求(一次),目标机应答(二次),主机应答目标机(三次)

(4)必须建立连接,效率会稍低

Socket

其实我们说的网络编程其实指的就是Socket编程,Socket是为网络服务提供的一种机制。相当于一个端点,依靠这个端点实现通信双方的通信通路

(1)通信的两端都必须有Socket

(2)网络通信其实就是Socket间的通信

(3)数据在两个Socket间通过IO进行传输

UDP通行

UDP发送端

虽然已经有了Socket通信端点,但是针对不同的协议,建立通信短点的方式也是不同的。以下介绍UDP传输的服务发送端是如何建立的:

步骤:

(1)建立udpsocket服务

(2)提供数据,并将数据封装到数据包中

(3)通过Socket服务的发送功能,将数据包发出去

(4)关闭资源

Snipaste_2019-09-18_00-08-08

UDP接收端

步骤:

(1)定义udpsocket服务,监听一个端口

(2)定义一个空的数据包,用来存储接收到的数据。因为数据包中有更多的功能提取字节数据中的数据信息

(3)通过socket服务的receive方法将收到的数据存入已定义好的数据包中

(4)通过数据包对象的特有功能将这些不同的数据取出

(5)关闭资源

Snipaste_2019-09-18_00-31-47