Datagramsocket:receive(...) 如何处理数据包的碎片

2023-11-29

我从我的教授那里了解到,使用 UDP 套接字发送的数据报包在较低层中会被分段,并且may作为多个数据包到达接收端。例如,如果我在数据报包中发送 1000 字节的数据,则在接收端might到达时,例如 2 字节、500 字节、12 字节等。因此,他建议执行多个receive(...)来接收发送方发送的整个1000字节数据包。

后来,当我浏览数据报套接字接收(...)的Java文档时,有一行内容如下:“此方法将阻塞,直到收到数据报。...”这是否意味着接收到整个数据报包当我们使用Java时不需要进行多次接收(尽管理论上是这样)?

请。阐明。如果每个数据包的多个 receive(...) 是解决此问题的唯一选择,请。就如何做到这一点提出建议。


任何电话至receive()将为您提供整个数据包 - 片段处理发生在套接字下面的两层中。碎片和碎片整理发生在网络/互联网层(IP),因此套接字永远不会看到片段,而只会接收完整的 UDP/TCP 数据包(只有完整的数据包被发送到侦听端口)。

所以,不,你不需要多个receive()获取单个数据包,但您应该意识到 UDP 不可靠,因此如果一个片段在网络层中丢失(并且在某些情况下如果它无序到达),您将无法获取该数据包。

您可能还想检查方法getReceiveBufferSize() and setReceiveBufferSize()如果您在接收数据包时遇到问题 - 如果缓冲区大小小于数据包大小,则不能保证您可以接收数据包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Datagramsocket:receive(...) 如何处理数据包的碎片 的相关文章

  • 深入理解Java中的Volatile

    Java是否允许输出1 0 我已经对其进行了非常深入的测试 但无法获得该输出 我只得到1 1 or 0 0 or 0 1 public class Main private int x private volatile int g Exec
  • 将 for 循环转换为 concat String 为 lambda 表达式

    我有以下 for 循环 它迭代字符串列表并将每个单词的第一个字符存储在StringBuilder 我想知道如何将其转换为 lambda 表达式 StringBuilder chars new StringBuilder for String
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • JTable 使用行号?

    我正在创建一个程序 其工作原理如下Microsoft Excel 在JAVA中 我的问题是如何将行号放在每行旁边JTable 我已经看到它在其他 Java 程序中工作 我只是不知道如何将它包含在我的程序中 谷歌给了我这个网站 http ti
  • Java 1.7.51 小程序的互联网限制

    在之前的几个月里 我为一个学术项目开发了一个沙箱 Java 小程序 由于预算有限 我无法与值得信赖的证书颁发机构签署它 随着 Java 1 7 51 的发布 我发现新的安全限制禁止执行小程序 因为缺少签名 到目前为止 我已经找到了解决这个问
  • Spring 在使用 JUnit 的单元测试中不自动装配

    我使用 JUnit 测试以下 DAO Repository public class MyDao Autowired private SessionFactory sessionFactory Other stuff here 正如您所看到
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • 我在这个正则表达式中做错了什么?

    我正在做一个关于正则表达式的学校作业 我先解释一下 我必须编写一个正则表达式来检查 URL 我必须检查的条件是 URL 是 http s 还是 ftp s 域名是 nl 还是 edu 至少有一个第三级域名 但如果该域名以 万维网 必须有一个
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • java中接口上的抽象方法是什么[重复]

    这个问题在这里已经有答案了 可能的重复 为什么要将 Java 接口方法声明为抽象方法 https stackoverflow com questions 641536 why would one declare a java interfa
  • Java错误:不是一个语句,我不知道为什么?

    我真的不确定是什么导致发生这个编译时错误 我一直在试图弄清楚 但似乎找不到问题所在 ClassTable java 253 error not a statement class c class classes nextElement Cl
  • 在 DAO 中反映继承关系最有效的方法是什么?

    使用 MVC 结构和业务对象 http en wikipedia org wiki Business object DAO http en wikipedia org wiki Data access object建筑学 对于任何正常的业务
  • SLF4J 日志级别作为参数[重复]

    这个问题在这里已经有答案了 我们希望使用 SLF4J 但我们发现的一件事是您无法将级别指定为参数 即 Logger log Level INFO messsage 你必须这样做 logger info message 这使得无法通过方法传递
  • Web 服务器上的身份验证和授权 ?

    我正在构建一个 Android 应用程序 它与 apache tomcat 上的 Web 服务器进行通信 Web 服务器采用 JAVA EE 构建 目前 为了进行身份验证和授权 我使用用户名 密码 为了管理会话 我使用令牌 因此 当用户登录
  • 如何安装“Android 支持库”以将 Gluon Mobile 应用程序部署到 Android?

    我想使用 Gluon Mobile 框架开发一个 Android 应用程序 我在 Netbeans IDE 中安装了 Gluon 插件 创建了一个示例项目并成功构建了它 现在我想将该应用程序部署到 Android 设备 我指的是在线文档 1
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • Guava Splitter/Joiners 每次使用时都应该创建吗?

    Guava 包含用于拆分和连接字符串的实用程序 但它需要实例化 Splitter Joiner 对象才能执行此操作 这些是小对象 通常仅包含要分割 合并的字符 维护对这些对象的引用以便重用它们是一个好主意 还是在需要它们时创建它们并让它们被
  • JavaFX ComboBox - 显示文本但在选择时返回 ID

    我有一个包含机场的数据库表 每个机场都有一个名称和一个 ID 在 JavaFX 中我有一个表单 其中包含ComboBox 组合框需要显示所有机场名称 并且在提交表单时需要将机场的 ID 插入数据库 而不是其名称 但我并没有真正弄清楚解决方案
  • JDK1.6 中 ManagementFactory 的托管 Mbean - NotCompliantMBeanException:

    我使用 ManagementFactory 来获取 JDK1 5 和 JBOSS 4 X 中的 ManagedMbeans 现在想将我的相同代码移至 JDK 1 6 Mbean 部分中断并抛出异常 引起原因 javax management
  • 从 Eclipse 启动时创建新的 JFrame 时 Java 将关闭。没有抛出异常

    我正在开发一个在 Eclipse 中开发的 Java 项目 直到今天一切都很好 昨天 在完成我的项目之前 我最后一次运行它以检查一切是否正常并且运行正常 但是今天 当我启动该项目并按下 运行 时 我的应用程序就神秘地关闭了 没有崩溃 没有消

随机推荐

  • 将 JPanel 中的 JLabel 定位在图像下方

    我想将给定示例中的文本移动到图像和形状下方 请帮我做一下 package test import java awt BasicStroke import java awt Graphics import java awt Graphics2
  • RestSharp 身份验证器遵循 302 重定向

    我正在尝试使用 RestSharp 向 API 发出请求 通过将请求重定向到登录服务器 使用基本凭据进行身份验证 获取 cookie 然后重定向回 API 来保护此 API 恐怕我无法控制这个 所以请求的顺序是 Request Respon
  • Swift:使用 WKWebView 的 createPdf 创建 pdf

    Edit 在找到问题 2 的解决方案后 并且给人的印象是问题 1 没有简单的 开箱即用的解决方案 我决定关闭这个问题 而专门针对分页问题创建另一个问题 我有两个问题WKWebViews createPDF configuration com
  • Threejs 拖动点

    我必须生成大量可以单独拖动的对象 此外 这些物体仅限于平面形状 例如矩形或圆形 起初 我使用简单的 CircleGeometries 将其放置在另一个几何图形 平面 内 拖动它们也很容易 但正如预期的那样 大约 200000 个它们的性能非
  • VSTS Microsoft 托管代理:虚拟机大小

    根据https github com MicrosoftDocs vsts docs blob master docs pipelines agents hosted mdMicrosoft 托管代理的虚拟机大小为 目前使用 Microso
  • 为什么 CSS 选择器/HTML 属性首选破折号?

    过去我总是使用下划线来定义class and idHTML 中的属性 在过去的几年里 我改用破折号 主要是为了使自己与社区趋势 不一定是因为它对我有意义 我一直认为破折号有更多的缺点 但我没有看到它的好处 代码完成和编辑 大多数编辑器将破折
  • 优化多个文件的并行处理

    我有一个程序处理很多文件 其中每个文件需要完成两件事 首先 读取并处理文件的某些部分 然后生成结果MyFileData被存储 第一部分可以并行 第二部分则不能 按顺序执行所有操作非常慢 因为 CPU 必须等待磁盘 然后它会工作一点 然后发出
  • 为什么代码在 VB.net 中不起作用,但在 VBA 中却可以;获取对象

    VBA 代码效果很好 Sub testVBA Dim wb As Object Lotus123 Document Set wb GetObject S Temp T 0375D WK3 Lotus123 Workbook End Sub
  • Opscode Chef 注册节点时请求实体太大

    我正在注册一个在运行列表中搜索其他节点属性的节点 问题是当节点信息太大而无法通过 HTTP 放在服务器上时 然后 Chef client 打印一条 FATAL Net HTTPServerException 413 Request Enti
  • 为什么 gets() 不消耗整行输入?

    我正在尝试使用gets 从用户那里获取一个字符串 但程序似乎直接传递过来gets 用户提供输入时不会有任何停顿 为什么是gets 什么也没做 char name 13 printf Profile name gets name printf
  • 模拟二元交叉(SBX)交叉运算符示例[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在一个研究团队中工作 解决多目标工程问题 我专注于NSGA II算法 但现在我陷入困境 我需要了解 SBX 交叉如何与数值示例一起工作 以便我可以
  • 如何防止 Less 尝试编译 CSS calc() 属性?

    The Less我正在使用的编译器 橙色比特 and 无点1 3 0 5 正在积极翻译 body width calc 100 250px 1 5em into body width calc 151 5 这显然是不希望的 我想知道是否有一
  • 移动控件时阻止表单滚动

    我有一个打开自动滚动的表单 并且表单中有一个用户可编辑区域 用户可以调整控件大小或移动控件 移动控件时 如果它们移出窗体的工作区 则会显示滚动条 这是我的意图 现在 表单将自动向下滚动 因此当用户不释放鼠标时 控件将继续向下移动 这显然不是
  • 用值填充张量中的特定索引

    我是张量流初学者 我创建了这个张量 z tf zeros 20 2 tf float32 我想改变索引的值z 2 1 and z 2 2 to 1 0而不是零 我怎样才能做到这一点 你什么exactly无法询问有两个原因 z是一个常数张量
  • 多个模板中的 Twig Assetic 样式表

    我正在尝试将样式表添加到数组中 以便当树枝模板延伸到第二层和第三层时 聚合的样式将继续下去 这个主题是相关的跨继承模板组合资产资源 From 配置 yml 我做了一个全局数组mystyles这样我们就可以在渲染过程中 冒泡 时添加到必要的样
  • web.py 应用程序上的 Pytests 未覆盖方法代码

    首先 很抱歉 如果术语不是 100 正确 或者有些东西没有 100 有意义 我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生 我有一个 web py 应用程序 需要使用 pytest 测试其功能并生成代码覆盖率报告pytest c
  • 如何找出哪个变量具有最大值

    if A gt B and C and D print A wins if B gt A and C and D print B wins 如何检查并查看哪个变量包含组中最大的整数 决定谁胜谁负 您可以测试每一项 if A gt B and
  • 如何离线安装 DoctrineFixturesBundle

    首先 由于我的 ISP 我无法使用 Composer 所以 我需要一种方法来安装DoctrineFixturesBundle手动 所以我开始从github 还有data fixtures捆 我在我的项目中创建这个文件夹结构 vendor d
  • SSE 的 EventSource 和 XMLHttpRequest 之间的区别

    我正在实现服务器发送事件应用程序逻辑 服务器端已经完成 现在正在处理客户端部分 在我看来 JS 正在使用 EventSource 对象 这看起来非常合乎逻辑 因为它就是为此而设计的 但它也有很多限制 只有 GET 请求 没有标头 没有数据
  • Datagramsocket:receive(...) 如何处理数据包的碎片

    我从我的教授那里了解到 使用 UDP 套接字发送的数据报包在较低层中会被分段 并且may作为多个数据包到达接收端 例如 如果我在数据报包中发送 1000 字节的数据 则在接收端might到达时 例如 2 字节 500 字节 12 字节等 因