| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Java 网络编程 -> 正文阅读 |
|
[网络协议]Java 网络编程 |
一、网络架构模型 1、OSI参考模型?? OSI定义了网络连接的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层) 2、TCP/IP五层模型 TCP/IP 五层协议(物理层、数据链路层、网络层、传输层、应用层) (1)应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。 二、协议分类 java.net包中提供了两种常见的网络协议的支持:TCP和UDP。 1、TCP (1)TCP:是一种面向连接的保证可靠传输的协议,通过TCP协议传输,得到一个顺序无差错的数据流,发送方和接收方成对的两个socket之间必须连接连接,当一个socket 等待连接时,另一个 socket可以要求进行连接,一旦两个socket连接起来,它们就可以进行双向的数据传输,双方都可以进行发送和接收。 (2)TCP的三次握手 ? ? ? ?第一次:客户端发送SYN包到 服务器,并进入SYN_SEND状态,等待服务器确认。 (3)特点 ① TCP传输数据没有大小的限制,一旦连接建立起来,双方的Socket就可以按照统一的格式传输大的数据。 ③?TCP在网络通信上有极强的生命力的。如远程连接(TeLnet) 和 文件的传输(FTP) 都需要不定长度数据被可靠的传输,但是可靠的传输,需要付出代价,对数据的内容中正确性的检验必然需要占用计算的处理时间和网络宽带,所以TCP传输的效率不如UDP高。 2、UDP (1)UDP (User Datagram Protocol) 是一种 无连接协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,在网络以任何可能的路径传往目的地址,因此能否到达的地,到达目的地址的时间以及内容的正确性都是不能被保证。 (2)特点 ① 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 ② 在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时,不建议使用UDP协议。 ③ 特点:数据被限制在64kb以内,超出这个范围就不能发送了。 ④?UDP 操作简单,而且仅需要少量的监护,所以通常用于局域网高可靠性的分散系统中,比如 视频会议。 三、TCP网络编程 1、概述 (1)两端通信时步骤: ② 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 (2)在Java中,提供了两个类用于实现TCP通信程序: ① 客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。 ② 服务端:java.net.ServerSocket 类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。 2、Socket类 常用方法 (1)getInputStream():返回输入流 (2)getOutputStream():返回输出流 (3)close():关闭 (4)shutdownOutput():禁用输出流 3、ServerSocket类 等待通过网络的请求 常用方法 (1)accept():监听并接受连接,返回一个新的Socket对象,用于和客户端实现通信,该方法会一直阻塞直到建立连接。 4、接收数据 (1)建立ServerSocket连接,并指定端口号 (2)等待客户端通信 (3)打开输入流 (4)读取客户端发送信息 (5)关闭资源 5、发送数据 (1)建立Socket对象,指定地址和端口号 (2)打开输出流 (3)构建要写入的内容 (4)调用writer()方法写入 (5)关闭资源 四、UDP网络编程 1、DatagramSocket类 构造方法 DatagramSocket():无参构造方法 DatagramSocket(int port):指定端口号 DatagramSocket(int port,InetAddress ia):指定端口号和IP地址 2、DatagramPacket类 (1)构造方法 DatagramPacket(byte[] b, int length):数据包中的数据和长度 DatagramPacket(byte[] b, int length, InetAddress ad, int port):数据包中的数据、长度、IP地址和端口号 (2)常用方法 getData():返回数据包中的数据 getAddress():返回该数据包发送或接收数据包的IP地址 3、发送数据 (1)创建发送端socket对象——DatagramSocket,设置端口号 (2)创建数据并打包到DatagramPacket对象 (3)通过调用send()方法发送 (4)释放资源 4、接收数据 (1)创建接收端socket对象——DatagramSocket (2)创建需要发送的数据包对象 (3)调用receive()方法接收数据 (4)构建一个字符串,解析数据包对象,获取信息 (5)释放资源 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:31:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |