Java网络编程,对使用UDP实现TCP(一)三次握手实现的补充
修改片段1
在第一次握手时,由《TCP/IP详解》卷二中对tcp计时器的描述中,我们可知连接的建立是需要进行判断,如果客户端发送了SYN连接请求,服务端没有在有限时间内进行恢复,就会取消本次连接。
我们使用 setSoTimeout() 来判断超时时间,当超过了我们的计时时间,会抛出一个RuntimeException异常,我们需要使用 try-catch来捕获这个异常,并且输出提示
//调用对象发送数据datagramSocket.send(datagramPacket);datagramSocket.setSoTimeout(75000);System.out.println("====================");System.out.println("接收数据中:...");/*** 在第二次握手中,客户端主要会检查两个方面的内容:* 检查ACK标志位:客户端需要确认服务端发送的确认信息(SYN-ACK)中的ACK标志位是否已设置。ACK标志位表示服务端确认收到了客户端的握手请求。* 检查确认号(ACK):客户端需要检查服务端发送的确认信息中的确认号(ACK)是否正确。确认号应该是服务端发送的初始序列号加1,用于告知服务端它已经正确接收到服务端的数据。*///创建数据包,用于接收数据byte[] bytes = new byte[1024];DatagramPacket datagramPacket2 = new DatagramPacket(bytes, bytes.length);datagramSocket.receive(datagramPacket2);//停止计时datagramSocket.setSoTimeout(0);
修改片段二
- 无论是客户端还是服务端在每次接收信息和数据时,需要判断连接请求和传来的数据是否为自己应该接收的。
- 在我们发现不是当前接收方需要接收的数据时,该如何处理
判断在服务端第二次握手过程中,传来数据是否应该由本服务端接收。(是否为本次连接)
if (Integer.parseInt(strArr3[0]) != 1|| Integer.parseInt(strArr3[1]) != Integer.parseInt(ACK2)|| (Integer.parseInt(strArr3[2]) - 1) != Integer.parseInt(Seq2)){throw new WrongConnectionException("非本次连接");}
判断若不是为本次连接,我采用的方法是抛出一个异常
- 自定义异常类
- 抛出异常
- 捕获异常(try-catch)
注意:该方法不是完全合乎逻辑的,因为抛出异常后程序将会停止,而且接收到数据后才进行的判断。正常情况下应该在接收前进行判断是否为本次连接的内容,如若不是本次连接数据,应该忽略本次连接,继续等待数据。
创建异常类:
package TCP_handShake;public class WrongConnectionException extends Exception{public WrongConnectionException(String Msg) {super(Msg);}
}
异常捕获在上一个代码段。
catch (WrongConnectionException e) {System.out.println("异常提醒:" + e.getMessage());}
相关文章:
Java网络编程,对使用UDP实现TCP(一)三次握手实现的补充
修改片段1 在第一次握手时,由《TCP/IP详解》卷二中对tcp计时器的描述中,我们可知连接的建立是需要进行判断,如果客户端发送了SYN连接请求,服务端没有在有限时间内进行恢复,就会取消本次连接。 我们使用 setSoTimeout…...
Redis 的常见使用场景
01 缓存 作为 Key-Value 形态的内存数据库,Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数据非常简单,只需要通过 string 类型将序列化后的对象存起来即可,不过也有一些需要注意的地方: 必须保证不同对象的…...
VRRP协议详解
目录 一、基础概念 1、概念 2、VRRP的基本结构 状态机 二、VRRP主备备份工作过程 1、备份工作过程 2、VRRP的负载分担工作 三、实验 一、基础概念 1、概念 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的I…...
Linux 常用命令----mktemp 命令
文章目录 基本用法实例演示高级用法注意事项 mktemp 命令用于创建一个临时文件或目录,这在需要处理临时数据或进行安全性测试时非常有用。使用 mktemp 可以保证文件名的唯一性,避免因文件名冲突而导致的问题。 基本用法 创建临时文件: 命令 mktemp 默认…...
基于ssm服装定制系统源码和论文
idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 环境: jdk8 tomcat8.5 开发技术 ssm 基于ssm服装定制系统源码和论文751 1.1项目研究的背景 困扰管理层的许多问题当中,服装定制将是广大用户们不可忽视的一块。但是管理好服装定制又面临很多麻…...
【AI】如何准备mac开发vue项目的环境
为了在Mac上开发Vue项目,你需要准备一些工具和环境。以下是主要的步骤: 安装Node.js和npm: Vue.js是一个基于JavaScript的框架,因此你需要Node.js环境。访问Node.js官网下载并安装Node.js,这也会自动安装npm࿰…...
BERT大模型:英语NLP的里程碑
BERT的诞生与重要性 BERT(Bidirectional Encoder Representations from Transformers)大模型标志着自然语言处理(NLP)领域的一个重要转折点。作为首个利用掩蔽语言模型(MLM)在英语语言上进行预训练的模型&…...
JVM的类的生命周期
目录 前言 1. 加载(Loading): 2. 验证(Verification): 3. 准备(Preparation): 4. 解析(Resolution): 5. 初始化(Ini…...
uni-app获取response header响应头(h5/app/小程序三端)
h5、app获取方式:getResponseHeader(key) 示例:参考:HTML5 API Reference // 创建xhr实例: // #ifdef APP-VUE let xhr new plus.net.XMLHttpRequest(); // #endif // #ifdef H5 let xhr new window.XMLHttpRequest(); // #en…...
本地部署语音转文字(whisper,SpeechRecognition)
本地部署语音转文字 1.whisper1.首先安装Chocolatey2.安装3.使用 2.SpeechRecognition1.环境2.中文包3.格式转化4.运行 3.效果 1.whisper 1.首先安装Chocolatey https://github.com/openai/whisper 以管理员身份运行PowerShell Set-ExecutionPolicy Bypass -Scope Process -…...
js new 原理
mdn new new 调用函数时,该函数将被用作构造函数 类只能用 new 运算符实例化 不使用 new 调用一个类将抛出 TypeError。 过程 new Foo(…) 执行时: 创建一个空的简单 JavaScript 对象。 为方便起见,我们称之为 newInstance。 如果构造函数…...
智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黏菌算法4.实验参数设定5.算法结果6.参考文献7.MA…...
LeetCode每日一题——2132.用邮票贴满网格图
参考资料: 2132. 用邮票贴满网格图 - 力扣(LeetCode) 题目描述 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。 给你邮票的尺寸为 stampHeight x…...
PyQt6 表单布局Form Layout (QFormLayout)
锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计43条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...
Python: any()函数
在Python中,any函数是一个内置函数,它接受一个可迭代对象作为参数,并返回一个布尔值。当可迭代对象中至少一个元素为真(非零、非空、非None等)时,any函数返回True;否则,返回False。 …...
一些AG10K FPGA 调试的建议-Douglas
PLL AGM FPGA 在配置成功时,PLL 已经完成锁定,lock 信号已经变高;如果原设计中用 lock 信号输出实现系统 reset 的复位功能,就不能正确完成上电复位;同时,为了保证 PLL 相移的稳定,我们需要在 P…...
【模型量化】神经网络量化基础及代码学习总结
1 量化的介绍 量化是减少神经网络计算时间和能耗的最有效的方法之一。在神经网络量化中,权重和激活张量存储在比训练时通常使用的16-bit或32-bit更低的比特精度。当从32-bit降低到8-bit,存储张量的内存开销减少了4倍,矩阵乘法的计算成本则二…...
次模和K次模是多项式可解吗?
次模是多项式可解吗 **是的,**次模函数的最优化问题通常是多项式时间可解的。这是因为次模性质导致了问题的结构,使得可以利用高效的算法进行求解。 具体来说,针对次模函数的最优化问题,例如极大化或极小化这样的目标函数…...
网络安全——SQL注入实验
一、实验目的要求: 二、实验设备与环境: 三、实验原理: 四、实验步骤: 五、实验现象、结果记录及整理: 六、分析讨论与思考题解答: 七、实验截图: 一、实验目的要求: 1、…...
【cocotb】【达坦科技DatenLord】Cocotb Workshop分享
https://www.bilibili.com/video/BV19e4y1k7EE/?spm_id_from333.337.search-card.all.click&vd_sourcefd0f4be6d0a5aaa0a79d89604df3154a 方便RFM实现 cocotb_test 替代makefile , 类似python 函数执行...
Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数
Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数 一、创建KafkaAdminClient二、获取kafka集群topic元信息三、获取每个topic的名称、分区数、副本数四、生成增加topic副本的json文件五、执行增加topic副本的命令六、确认topic增加副本是否成功一、创建K…...
开具实习证明:在线实习项目介绍
大数据在线实习项目,是在线上为学生提供实习经验的项目。我们希望能够帮助想要在毕业后从事数据科学类工作的学生更加顺利地适应从教室到职场的转换;也帮助那些在工作中需要处理数据、实现数据价值的其他职能的从业者高效快速地掌握每天都能用起来的数据…...
MFC逆向之CrackMe Level3 过反调试 + 写注册机
今天我来分享一下,过反调试的方法以及使用IDA还原代码 写注册机的过程 由于内容太多,我准备分为两个帖子写,这个帖子主要是写IDA还原代码,下一个帖子是写反调试的分析以及过反调试和异常 这个CrackMe Level3是一个朋友发我的,我也不知道他在哪里弄的,我感觉挺好玩的,对反调试…...
【Centos】
一、Virtualbox安装Centos 1、Virtualbox 下载地址: Virtualbox 2、Centos 下载地址: Centos 3、Virtualbox安装Centos教程 Virtualbox安装Centos教程: Virtualbox安装Centos教程...
1+X大数据平台运维职业技能等级证书中级
hadoop: 由于我的功能限制,我无法直接为您执行这些操作或提供实际的截图。但我可以为您提供一步步的指导,帮助您完成这些任务。 1. 解压JDK安装包到“/usr/local/src”路径,并配置环境变量。 - 解压JDK:tar -zxf jd…...
网络基础(五):网络层协议介绍
目录 一、网络层 1、网络层的概念 2、网络层功能 3、IP数据包格式 二、ICMP协议 1、ICMP的作用和功能 2、ping命令的使用 2.1ping命令的通用格式 2.2ping命令的常用参数 2.3TypeCode:查看不同功能的ICMP报文 2.4ping出现问题 3、Tracert 4、冲突域 5、…...
浅显易懂 @JsonIgnore 的作用
1.JsonIgnore作用 在json序列化/反序列化时将java bean中使用了该注解的属性忽略掉 2.这个注解可以用在类/属性上 例如:在返回user对象时,在pwd属性上使用这个注解,返回user对象时会直接去掉pwd这个字段,不管这个属性有没…...
【计算机设计大赛作品】诗意千年—唐朝诗人群像的数字展现_附源码—信息可视化赛道获奖项目深入剖析【可视化项目案例-20】
🎉🎊🎉 你的技术旅程将在这里启航! 记得看本专栏里顶置的可视化宝典导航贴哦! 🚀🚀 本专栏为可视化专栏,包含现有的所有可视化技术。订阅专栏用户在文章底部可下载对应案例完整源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论你…...
「Swift」Xcode多Target创建
前言:我们日常开发中会使用多个环境,如Dev、UAT,每个环境对应的业务功能都不同,但每个环境之间都只存在较小的差异,所以此时可以使用创建多个Target来实现,每个Target对应这个一个App,可以实现一…...
Python文件命名规则:批量重命名与规则匹配的文件
我从一个旧的 iOS 项目中获得了一个文件夹,其中包含许多类似于 image.png image2x.png another-image.png another-image2x.png然而,由于该项目现在只需要 2x.png 图像,我已经删除了所有的文件没有 2x 的名称。 但是我现在想知道如何轻松…...
WordPress 多厂商/seo关键字优化技巧
在上一篇博客中(《HTTP权威指南》之HTTP相关概念详解)我们简单对HTTP相关的基本概念做了一些简单的了解,但未对HTTP连接管理的内容做一些详细的介绍。本篇博客我们就一起来看一下HTTP连接管理的相关内容。世界上几乎所有的HTTP通信都是有TCP/IP承载的,它…...
king wordpress theme/外链网站是什么
“近日,水韵城商业管理有限公司与竞优软件达成战略合作协议,在水韵城天虹商业地产管理信息化方面开展合作关系,深化合作内容。水韵城天虹将使用竞优的商业运营管理系统,搭建一体化管控和运营信息化平台,实现从传统管理…...
尚义网站建设/东莞网站设计排行榜
第一步:首先创建遍历文件夹的 java source ,这里主要是编写Oracle 可以执行的 Java 代码代码如下:create or replace and compile java source named filesystems asimport java.io.File;import java.util.ArrayList;public class FileSystem…...
开发公司证明房产证明/百度seo效果怎么样
2019独角兽企业重金招聘Python工程师标准>>> mtoa 检查shader的aov 仅仅读取 mtd文件中对aov的定义 例如: [attr aov_surface]aov.type INT 0x05[attr aov_Nw]aov.type INT 0x05[attr aov_fr]aov.type …...
怎么把网站挂在服务器/自媒体营销模式有哪些
你的电脑桌面看上去是不是这个样子?如果你有下面几个“坏习惯”,电脑里的文件不乱才怪:文件层级太深:比如说一个销售数据excel文件存放在“D盘-2017年-大灵通项目-西大街门店-月报表”,这个目录下,看上去一…...
怀集住房和城乡建设部网站/seo+网站排名
Python 中的迭代器 Python 3中的迭代器 容器与迭代器 在Python 3中,支持迭代器的容器,只要支持__iter__()方法获取一个迭代器对象既可。 我们来看几个例子. 列表迭代器 首先是列表: >>> a [1,2,3,4] >>> a [1, 2, 3, 4] &…...