当前位置: 首页 > news >正文

网络编程01

1. 概念

通过网络,让两个主机之间能够进行通信,基于这样的通信完成一定的功能

只要满足进程不同即可,即使是同一个主机,只要是不同的进程,基于网络完成编程

进行网络编程时,需要操作系统提供一组API,通过这些API才能完成编程

API可以认为是应用层和传输层之间交互的路径(Socket API)

通过这套API可以完成不同主机之间,不同系统之间的网络通信

传输层,提供的网络协议,主要是 TCP 和 UDP

这两个协议的特性(工作原理)差异很大,使用这两个协议进行网络编程时,存在一定的差异

系统分别提供了两套 API

2. TCP 和 UDP 的区别

1)TCP 是有连接的,UDP 是无连接的

(连接是抽象的概念)

连接的本质就是建立连接的双方,各自保存对方的信息

两台计算机建立连接,就是双方彼此保存了对方的关键信息

TCP 想要通信,需要先建立连接;如果对方拒绝,通信无法完成

UDP 想要通信,直接发送数据即可,不需要对方的同意,UDP 自身也不会保存对方的信息

UDP 自己不知道对方的信息,但程序员要知道。UDP 本身不保存,但调用UDP SocketAPI的时候要把对方的位置传送过去

2)TCP 是可靠传输,UDP 是不可靠传输

网络上进行通信的时候,A -> B发送一个消息,是不可能一定到达的

所以对于可靠传输来说:

A -> B发送一个消息,消息是否到达B,A本身能感知到

进一步的,就可以在发送失败的时候采取一定的措施(尝试重传等)

TCP 内置了可靠传输机制

UDP 没有内置可靠传输机制

可靠传输会使机制变复杂,传输效率降低

3)TCP 是面向字节流的,UDP 是面向数据报的

此处的字节流和文件IO的字节流是一个概念

TCP 和文件操作一样,以字节为单位进行传输

UDP 是按照数据报(UDP数据报有严格的格式)为单位进行传输

网络通信数据的基本单位:

1.数据报   Datagram

2.数据包   Packet

3.数据帧   Frame

4.数据段   Segment

4)TCP 和 UDP 都是全双工的

一个信道,允许双向通信——全双工

一个信道,只能单向通信——半双工

代码中使用一个 Socket 对象,就可以发送数据也能接受数据

3.UDP 的 socket api 的使用

3.1 Socket

soketc 是操作系统的中的一个概念,本质上是一种特殊文件

把网络通信和文件操作统一了:

Socket 就属于是把“网卡”这个设备给抽象成文件了

往 Socket 文件中写数据,相当于通过网卡发送数据

往 Socket 文件中读数据,相当于是通过网卡接受数据

3.2 DatagramSocket API

DatagramSocket UDP Socket,用于发送和接收UDP数据报

在Java中使用这个类,来表示系统内部的 Socket 文件

1)DatagramSocket 构造方法:

DatagramSocket()
创建一个 UDP 数据报套接字的 Socket ,绑定到本机任意一个随机端口
(一般用于客户端)
DatagramSocket(int port)
创建一个 UDP 数据报套接字的 Socket ,绑定到本机指定的端口
(一般用于服务端)

2) DatagramSocket 方法:

void
receive(DatagramPacket p)
从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)
void send(DatagramPacket
p)
从此套接字发送数据报包(不会阻塞等待,直接发送)
void close()
关闭此数据报套接字

3.3 DatagramPacket AP

DatagramPacket UDP Socket 发送和接收的数据报
使用这个类,表示一个 UDP 数据报
UDP 是面向数据报的,每次进行传输,都是以 UDP 数据报为基本单位的

1)DatagramPacket 构造方法:

DatagramPacket(byte[]
buf, int length)
构造一个 DatagramPacket 以用来接收数据报,接收的数据保存在 字节数组(第一个参数 buf )中,接收指定长度(第二个参数 length
DatagramPacket(byte[]
buf, int offset, int length,
SocketAddress address)
构造一个 DatagramPacket 以用来发送数据报,发送的数据为字 数组(第一个参数 buf )中,从 0 到指定长度(第二个参数 length
address 指定目的主机的 IP 和端口号

2)DatagramPacket 方法:

InetAddress
getAddress()
从接收的数据报中,获取发送端主机 IP地址;或从发送的数据报中,获取接收端主机 IP 地址
int getPort()
从接收的数据报中,获取发送端主机的端口号;或从发送的数据报中,获取接收端主机端口号
byte[] getData()
获取数据报中的数据
构造 UDP 发送的数据报时,需要传入 SocketAddress,, 该对象可以使用 InetSocketAddress 来创
建。

3.4 InetSocketAddress API

InetSocketAddress SocketAddress 的子类 )构造方法:
InetSocketAddress(InetAddress addr, int port)
创建一个 Socket 地址,包含 IP 地址和端口号

相关文章:

网络编程01

1. 概念 通过网络,让两个主机之间能够进行通信,基于这样的通信完成一定的功能 只要满足进程不同即可,即使是同一个主机,只要是不同的进程,基于网络完成编程 进行网络编程时,需要操作系统提供一组API&…...

el-dialog修改其样式不生效加deep也没用

场景 el-dialog标签直接写在了template下。 解决方法 在template中先写一层div,包裹住el-dialog。...

三天精通一算法之快速排序

力扣链接912. 排序数组 - 力扣(LeetCode)注意这题快排不能用递归,否则堆会爆 快速排序(Quicksort)是一种高效的排序算法,通常使用分治法来将一个列表分成较小的子列表,然后递归地排序这些子列表…...

互联网、物联网的相关标准

互联网的相关标准 网络通信协议: HTTP(Hypertext Transfer Protocol):用于在网络中传输文本、图像、音频和视频等数据的协议。它基于请求-响应模型,客户端发送请求给服务器,服务器返回响应。HTTPS&a…...

Linux题库及答案

填空题 1. 建立用户账号的命令是__useradd________。 2. 修改账号密码的命令是__passwd________。 3. 更改用户密码过期信息的命令是__chage________。 4. 创建一个新组的命令是___groupadd_______。 5. 用于在不注销的情况下切换到系统中的另一个用户的命令是___su_…...

Android 镜像模式和扩展模式区别探讨-Android14

Android 镜像模式和扩展模式区别探讨 1、区分镜像模式和扩展模式1.1 扩展屏是否有显示内容1.2 镜像模式显示条件 2、镜像模式界面 同屏显示和异屏显示探讨DisplayManagerService启动及主屏添加-Android13 Android主副屏显示-Android14 1、区分镜像模式和扩展模式 LogicalDispla…...

深度学习笔记之BERT(五)TinyBERT

深度学习笔记之TinyBERT 引言回顾:DistilBERT模型TinyBERT模型结构TinyBERT模型策略Transformer层蒸馏嵌入层蒸馏预测层蒸馏 TinyBERT模型的训练效果展示 引言 上一节介绍了 DistilBERT \text{DistilBERT} DistilBERT模型,本节将继续介绍优化性更强的知…...

【时间序列预测】基于PyTorch实现CNN_BiLSTM算法

文章目录 1. CNN与BiLSTM2. 完整代码实现3. 代码结构解读3.1 CNN Layer3.2 BiLSTM Layer3.3 Output Layer3.4 forward Layer 4. 应用场景5. 总结 本文将详细介绍如何使用Pytorch实现一个结合卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM&am…...

联想Y7000 2024版本笔记本 RTX4060安装ubuntu22.04双系统及深度学习环境配置

目录 1..制作启动盘 2.Windows 磁盘分区,删除原来ubuntu的启动项 3.四个设置 4.安装ubuntu 5.ubuntu系统配置 1..制作启动盘 先下载镜像文件,注意版本对应。Rufus - 轻松创建 USB 启动盘 用rufus制作时,需要注意选择正确的分区类型和系统类型。不然安装的系统会有问题…...

VuePress学习

1.介绍 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。…...

一次“okhttp访问间隔60秒,提示unexpected end of stream“的问题排查过程

一、现象 okhttp调用某个服务,如果第二次访问间隔上一次访问时间超过60s,返回错误:"unexpected end of stream"。 二、最终定位原因: 空闲连接如果超过60秒,服务端会主动关闭连接。此时客户端恰巧访问了这…...

SQL最佳实践:避免使用COUNT=0

如果你遇到类似下面的 SQL 查询: SELECT * FROM customer c WHERE 0 (SELECT COUNT(*)FROM orders oWHERE o.customer_id c.customer_id);意味着有人没有遵循 SQL 最佳实践。该语句的作用是查找没有下过订单的客户,其中子查询使用了 COUNT 函数统计客…...

PG与ORACLE的差距

首先必须是XID 64,一个在极端环境下会FREEZE的数据库无论如何都无法承担关键业务系统的重任的,我们可以通过各种配置,提升硬件的性能,通过各种IT管控措施来尽可能避免在核心系统上面临FREEZE的风险,不过并不是每个企业…...

树莓派3B+驱动开发(2)- LED驱动(传统模式)

github主页:https://github.com/snqx-lqh 本项目github地址:https://github.com/snqx-lqh/RaspberryPiDriver 本项目硬件地址:https://oshwhub.com/from_zero/shu-mei-pai-kuo-zhan-ban 欢迎交流 笔记说明 如我在驱动开发总览中说的那样&…...

超详细搭建PhpStorm+PhpStudy开发环境

刚开始接触PHP开发,搭建开发环境是第一步,网上下载PhpStorm和PhpStudy软件,怎样安装和激活就不详细说了,我们重点来看一看怎样搭配这两个开发环境。 前提:现在假设你已经安装完PhpStorm和PhpStudy软件。 我的PhpStor…...

分析比对vuex和store模式

在 Vue 中,Vuex 和 store 模式 是两个不同的概念,它们紧密相关,主要用于管理应用的状态。下面我会详细介绍这两个概念,并通过例子帮助你更好地理解。 1. Vuex 是什么? Vuex 是 Vue.js 的一个状态管理库,用…...

C# 网络编程--基础核心内容

在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。 C#网络编程的主要内容包括以下几个方面‌: : 上图引用大佬的图,大家也关注一下,有技术有品质,有国有家,情…...

【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(三)

承接上一篇文章:【C游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(二),我们这次来补充一些游戏细节,以及增加吃食物加长角色长度等设定玩法,也是本游戏的最后一篇文章。 一.玩家边界检测 首先是用来检测…...

uni-app H5端使用注意事项 【跨端开发系列】

🔗 uniapp 跨端开发系列文章:🎀🎀🎀 uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…...

SpringBoot中的@Configuration注解

在Spring Boot中,Configuration注解扮演着非常重要的角色,它是Spring框架中用于定义配置类的一个核心注解。以下是Configuration注解的主要作用: 定义配置类: 使用Configuration注解的类表示这是一个配置类,Spring容器…...

十二、路由、生命周期函数

router路由 页面路由指的是在应用程序中实现不同页面之间的跳转,以及数据传递。通过 Router 模块就可以实现这个功能 2.1创建页面 之前是创建的文件,使用路由的时候需要创建页面,步骤略有不同 方法 1:直接右键新建Page(常用)方法 2:单独添加页面并配置2.1.1直接右键新建…...

【蓝桥杯每日一题】X 进制减法

X 进制减法 2024-12-6 蓝桥杯每日一题 X 进制减法 贪心 进制转换 题目大意 进制规定了数字在数位上逢几进一。 XX 进制是一种很神奇的进制, 因为其每一数位的进制并不固定!例如说某 种 XX 进制数, 最低数位为二进制, 第二数位为十进制, 第三数位为八进制, 则 XX 进制…...

《蓝桥杯比赛规划》

大家好啊!我是NiJiMingCheng 我的博客:NiJiMingCheng 这节课我们来分享蓝桥杯比赛规划,好的规划会给我们的学习带来良好的收益,废话少说接下来就让我们进入学习规划吧,加油哦!!! 一、…...

C++算法练习day70——53.最大子序和

题目来源:. - 力扣(LeetCode) 题目思路分析 题目:寻找最大子数组和(也称为最大子序和)。 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素&#x…...

import是如何“占领满屏“

import是如何“占领满屏“的? 《拒绝使用模块重导(Re-export)》 模块重导是一种通用的技术。在腾讯、字节、阿里等各大厂的组件库中都有大量使用。 如:字节的arco-design组件库中的组件:github.com/arco-design… …...

ceph /etc/ceph-csi-config/config.json: no such file or directory

环境 rook-ceph 部署的 ceph。 问题 kubectl describe pod dragonfly-redis-master-0Warning FailedMount 7m59s (x20 over 46m) kubelet MountVolume.MountDevice failed for volume "pvc-c63e159a-c940-4001-bf0d-e6141634cc55" : rpc error: cod…...

C语言——验证“哥德巴赫猜想”

问题描述: 验证"哥德巴赫猜想" 任何一个大于2的偶数都可以表示为两个质数之和。例如,4可以表示为22,6可以表示为33,8可以表示为35等 //验证"哥德巴赫猜想" //任何一个大于2的偶数都可以表示为两个质数之和…...

Flourish笔记:柱状图(Column chart (grouped))

文章目录 样式设定Chart Type:图表类型Controls & Filters:展示方式Colors:颜色bars:柱子的调整labels:柱子数字标注X axis:横坐标标签Y axis:纵坐标标签Plot BackgroundNumber FormatingLe…...

深度学习案例:DenseNet + SE-Net

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 回顾DenseNet算法 DenseNet(Densely Connected Convolutional Networks)是一种深度卷积神经网络架构,提出的核心思想是通过在每一层与前面所有层进行直接连接…...

excel文件合并,每个excel名称插入excel列

import pandas as pd import os # 设置文件夹路径 folder_path rC:\test # 替换为您的下载文件夹路径 output_file os.path.join(folder_path, BOM材料.xlsx) # 创建一个空的 DataFrame 用于存储合并的数据 combined_data pd.DataFrame() # 遍历文件夹中的所有文件 for …...

做效果图网站有哪些/百度广告客服电话

Office成长课堂 点击左上角蓝字快速关注表格素材下载链接:https://pan.baidu.com/s/1bcuTsgrh0-Ge9vEPXG0Liw 提取码:72ig复制链接至电脑浏览器地址栏打开。案例检查字符串最右边的字符是文本字符,还是数字,如果是数字&#xff0c…...

下沙做网站/体验营销策略有哪些

2022-2028年中国口腔清洁用品市场品牌竞争态势与营销战略研究报告 【报告目录】: 第一章 2019-2021年口腔清洁用品行业分析 第二章 2019-2021年牙膏行业发展分析 2.1 牙膏行业相关概述 2.1.1 牙膏定义及历史 2.1.2 牙膏的分类 2.1.3 牙膏的生产工艺 2.1.4 中国牙…...

保定电子商务网站建设/关键词搜索优化公司

关于Spring集成Quartz有2种方法&#xff1a; 1. JobDetailBean. 2. MethodInvokeJobDetailFactoryBean. 以下从自身使用和理解以及掌握的知识对其进行阐述。 需要注意的是&#xff0c;在使用Spring集成Quartz的时候&#xff0c;一定不要忘记引入spring-support这个包: <!-- …...

网站建设通俗讲/b站在线观看人数在哪

前言&#xff1a; 作为一个即将毕业、正在实习的大学生&#xff0c;我也默默的进入了开发者的行列。从一开始的c#编码狗到java程序员再到现在的JS开发者&#xff0c;我一直 希望自己可以在这个万恶的互联网时代走的更远。但是我还是一个毛头小子&#xff0c;既没有技术也没有理…...

商丘网站建设方案/长沙百度首页优化排名

前段时间看到在V公司工作的朋友们都开始使用Mac电脑了。 一直对苹果电脑充满向往的我&#xff0c;实在是好心动&#xff08;同时伴随着一小股心痛&#xff0c;只有一小股…这得花多少银子呀…虽然我用得也是Mac….&#xff09; 堆得小山般的Apple iPAD 批量安装Mac Book Pro系统…...

外贸网站外包/北京学校线上教学

前面的话 上一篇介绍了变速运动&#xff0c;但只实现了直线运动。如果元素的left和top同时运动&#xff0c;并遵循不同的曲线公式&#xff0c;则会进行不同形式的曲线运动。本文将详细介绍圆周运动、钟摆运动、抛物线运动和流体运动这四种曲线运动形式 圆周运动 圆周运动可能是…...