【JavaEE】网络编程(网络编程基础、Socket套接字)

一、网络编程基础

1.1、什么是网络编程?

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)在这里插入图片描述
注意:我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。
但是,我们一定要明确,我们的目的是提供网络上不同主机,基于网络来传输数据资源:
进程A:编程来获取网络资源
进程B:编程来提供网络资源

1.2 网络编程中的基本概念

1.2.1 发送端和接收端

发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。
接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。
收发端:发送端和接收端两端,也简称为收发端。

1.2.2 请求和响应

在这里插入图片描述

1.2.3 客户端和服务端

服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。
客户端:获取服务的一方进程,称为客户端。

对于服务来说,一般是提供:客户端获取服务资源和客户端保存资源在服务端

1.3 常见的客户端服务端模型

在这里插入图片描述

二、Socket套接字

2.1 什么是Socket?

我们要使用QQ发送消息,想要真正发这个数据,需要上层协议调动下层协议,应用层调动传输层:传输层给应用层提供一组api,统称为Socket api

2.2 分类

系统提供的socket api主要有两种:
基于UDP的api
基于TCP的api

这两个都是传输层协议,但是差距很大,它们的api也就差别很大
![在这里插入图片描述](https://img-blog.csdnimg.cn/e47ea2

2.3 UDP数据报套接字通信模型

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报

java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用 DatagramPacket 作为发送或接收的UDP数据报。

注意:
使用 DatagramSocket 类创建出来的socket对象对应系统中一个特殊的文件(socket文件),socket文件对象对应网卡,相当于控制网卡的遥控器。
往这个文件里写数据相当于用网卡发送消息
从这个文件里读数据相当于用网卡接收消息

对于一次发送及接收UDP数据报的流程如下:
在这里插入图片描述

2.4 TCP流套接字通信模型

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/167494.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-Android App logger策略

背景 经常会为log定位而烦恼。比如:同一个类,一样的log输出,无法定位到Log输出的行。 方案 1.java StackTraceElement 通过java StackTraceElement获取类名,以及log输出行 2. 具体实现 NonNullprivate static String getSour…

[AUTOSAR][诊断管理][ECU][$14] 清除诊断相关信息

文章目录 一、简介(1)应用场景(2)清除DTC原理(3) 请求格式二、示例代码(1) 14_cls_dtc_info.c三、 常见bug大揭秘一、简介 根据ISO14119-1标准中所述,诊断服务14主要用于Client向Server(ECU)请求清除诊断相关信息。 (1)应用场景 一般而言,14诊断服务,主要应用场景…

中间件安全-CVE复现WeblogicJenkinsGlassFish漏洞复现

目录 服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish漏洞复现中间件-Weblogic安全问题漏洞复现CVE_2017_3506漏洞复现 中间件-JBoos安全问题漏洞复现CVE-2017-12149漏洞复现CVE-2017-7504漏洞复现 中间件-Jenkins安全问题漏洞复现CVE-2017-1000353漏…

Linux-管道、环境变量、常用命令

文章目录 管道概念要点与文件重定向的区别 环境变量概念查看 常用命令查看系统状况权限文件查找 用户相关工具 管道 概念 管道的作用类似于文件重定向,可以将前一个命令的stout做为下一个命令的stdin 要点 管道命令进处理stdout,会忽略stderr管道右边…

京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!

鲸参谋监测的京东平台9月份洗烘套装市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台洗烘套装的销量为7100,环比下降约37%,同比增长约87%;销售额为6000万,环比下降约48%&#…

Swingbench 压力测试(超详细)

目录 前提需要有配置好的oracle哦 1、环境准备 2、安装Swingbench 3、造数据 4、压测 前提需要有配置好的oracle哦 1、环境准备 启动监听 lsnrctl start 启动数据库 sqlplus / as sysdba startup 创建表 CREATE TABLESPACE soe DATAFILE /u01/app/oracle/oradata/or…

HTML+CSS+JS+Django 实现前后端分离的科学计算器、利率计算器(附全部代码在gitcode链接)

🧮前后端分离计算器 📚git仓库链接和代码规范链接💼PSP表格🎇成品展示🏆🏆科学计算器:1. 默认界面与页面切换2. 四则运算、取余、括号3. 清零Clear 回退Back4. 错误提示 Error5. 读取历史记录Hi…

MySQL-DML【数据操作语言】(图码结合)

目录 🚩DML的定义 👉DML-添加数据 🎓给指定的字段添加数据 🕶️查询表数据的方式 ❗疑惑点一【Affecter rows:行数】 ❗疑惑点二【字符集问题】 🎓给全部字段添加数据 🎓批量添加数据 &#x1f…

029-第三代软件开发-加载本地字体库

第三代软件开发-加载本地字体库 文章目录 第三代软件开发-加载本地字体库项目介绍加载本地字体库 关键字: Qt、 Qml、 QFont、 QFontDatabase、 ttf 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Langu…

机器人SLAM与自主导航

机器人技术的迅猛发展,促使机器人逐渐走进了人们的生活,服务型室内移动机器人更是获得了广泛的关注。但室内机器人的普及还存在许多亟待解决的问题,定位与导航就是其中的关键问题之一。在这类问题的研究中,需要把握三个重点&#…

2023年中职组“网络安全”赛项云南省竞赛任务书

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

PKU 概率论+数理统计 期中考复习总结

这里写目录标题 计算条件概率计算概率(放回与不放回)生成随机数算法Uniformity (test of frequency)1.Chi-Square test2.Kolmogorov-Sminov test Independence (test of autocorrelation)Runs test Acceptance-rejection methodmethod方法1:建…

AAPCS:最新的ARM子程序调用规则

AAPCS是arm公司发布的ARM架构应用程序二进制(ABI)程序调用接口,该文档由多个版本,博主第一次ARM程序调用规则是在《ARM体系与结构编程》,但书中描述的是ATPCS,AAPCS是ATPCS的升级版。后面去ARM官网看到了AA…

计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

车辆跟踪及测距 该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv5目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和…

javaEE - 1(9000字详解多线程)

一:认识线程 1.1 线程的概念 线程是操作系统中执行的最小单位,它是进程中的一个实体。一个进程可以包含多个线程,并且这些线程共享进程的资源,如内存、文件句柄等,但每个线程有自己的独立执行流程和栈空间。 线程在…

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

目前,大模型凭借超强的学习能力,已经在搜索、推荐、智能交互、AIGC、生产流程变革、产业提效等场景表现出巨大的潜力。大模型经过海量数据的预训练,通常具有良好的通用性和泛化性。用户基于“大模型预训练微调”开发范式即可在实际业务场景取…

【技能树笔记】网络篇——练习题解析(八)

目录 前言 一、LAN技术 1.1 堆叠与集群 1.2 MSTP的特点 二、WAN技术 2.1 PPP链路建立 2.2 PPPoE 2.3 组播 2.3.1 组播的IP 2.3.2 组播分发树 2.3.3 组播协议 三、IPv6基础 3.1 IPv6地址 3.2 IPv6协议 3.3 IPv6过渡技术 总结 🌈嗨!我是Filotimo__&#x1…

Linux下Jenkins自动化部署SpringBoot应用

Linux下Jenkins自动化部署SpringBoot应用 1、 Jenkins介绍 官方网址:https://www.jenkins.io/ 2、安装Jenkins 2.1 centos下命令行安装 访问官方,点击文档: 点击 Installing Jenkins: 点击 Linux: 选择 Red Hat/…

RK3568平台 GPIO子系统框架

一.gpio 子系统简介 gpio 子系统顾名思义,就是用于初始化 GPIO 并且提供相应的 API 函数,比如设置 GPIO为输入输出,读取 GPIO 的值等。gpio 子系统的主要目的就是方便驱动开发者使用 gpio,驱动 开发者在设备树中添加 gpio 相关信…

改进YOLO系列 | YOLOv5/v7 引入 Dynamic Snake Convolution | 动态蛇形卷积

准确分割拓扑管状结构,如血管和道路,在各个领域中至关重要,可以确保下游任务的准确性和效率。然而,许多因素使任务复杂化,包括细小的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这一知识来引导我们的DSCNet,以在三个阶段同时增强感知:…