设置 sendBufferSize() 后,UDP 套接字的消息太长

2024-04-26

我正在尝试发送 UDP 数据报(包含协议缓冲区消息)并收到消息太长的异常:

java.io.IOException: Message too long
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)

我已经设置了发送缓冲区大小,并检查了 getBufferSize() 的返回值,它比消息大:

byte[] b = msg.toByteArray();
            System.out.println( "Serialised message in " + b.length + " bytes (max length: " + network.getSendBufferSize() + ")");
            DatagramPacket p = new DatagramPacket( b, b.length, host, port );
            network.send( p );

Outputs:

VM version: 16.3-b01-279
Runtime version: 1.6.0_20-b02-279-9M3165
Vendor: Apple Inc.    
Serialised message in 69424 bytes (max length: 531075)
Problem sending packet: java.io.IOException: Message too long

我可以理解它是否拒绝设置大尺寸的缓冲区,但它似乎设置了我要求的任何内容,然后不遵守它。

这是在 OSX 上;我已经尝试过 1.6 和 1.5


  1. IPv4 中 UDP 数据报负载的限制是 65535-28=65507 字节,实际限制是路径的 MTU,如果幸运的话,它更像是 1460 字节。

  2. 当UDP分片时,loses数据报如果一个片段丢失,因为有no重传。

Use TCP.

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

设置 sendBufferSize() 后,UDP 套接字的消息太长 的相关文章

随机推荐

  • R:从数据表中选择范围内的值

    我在 R 中有一个数据表 name date John 1156649280 Adam 1255701960 etc 我想获取日期在某个范围内的所有行 在 SQL 中 我可能会说SELECT FROM mytable WHERE date
  • Scala 映射 foreach

    given val m Map String Int a gt 1 b gt 2 c gt 3 m foreach key String value Int gt println gt gt gt key key value value 为
  • 将 sys.stdout 重定向到 python 日志记录

    所以现在我们有很多 python 脚本 我们正在尝试整合它们并修复和冗余 我们正在尝试做的事情之一是确保所有 sys stdout sys stderr 都进入 python 日志记录模块 现在最重要的是 我们希望打印出以下内容
  • 如何在Python中像ERB一样进行模板化? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 ERB http ruby doc org stdlib 2 3 0 libdoc erb rdoc E
  • 阻塞事件循环

    我正在通过 Nodeschool 参加 函数式 Javascript 研讨会 其中一项练习的标题是 阻止事件循环 我很难理解它 通过过去的练习 我确保真正尝试理解解决方案 这样如果我必须重做问题 我就会理解如何解决它 而不是第一次就破解它
  • 以编程方式从 iPhone 拨打 USSD 代码 [重复]

    这个问题在这里已经有答案了 如何拨号USSD以编程方式为iPhone编写代码 我搜索发现iOS 7已经阻止使用USSD出于安全原因 我们可以手动拨打 USSD 代码 但在低于 iOS 7 的 iPhone 中 我们可以手动拨打 USSD 代
  • 使用 Node 和 Heroku 进行负载平衡

    我有一个 Web 应用程序 它接受来自 ios 应用程序的 api 请求 我的网络应用程序托管在 Heroku 上 使用他们的免费 dyno 每个请求能够处理 512 mb 的数据 因为 Node 是一个单线程应用程序 一旦我们开始从 io
  • 升级到 java 8 后无法使用 crashlytics 发布项目

    当我搬到java 8 我在应用程序发布中收到此错误 因为fabric崩溃解决方案 Could not determine the dependencies of task app crashlyticsStoreDeobsRelease g
  • NumPy 追加与 Python 追加

    在 Python 中 我可以附加到一个空数组 例如 gt gt gt a gt gt gt a append 1 2 3 gt gt gt a append 1 2 3 gt gt gt a 1 2 3 1 2 3 我怎样才能在 NumPy
  • Git http - 安全地记住凭据

    通过 HTTP S 连接到远程存储库时 有没有办法安全地让 git 记住我的凭据 我已经尝试过core askpass方法详述于git config http git scm com docs git config让外部脚本提供我的凭据 尽
  • R 中基因列表(使用 ENTREZID)的基因本体 (GO) 分析?

    我对 GO 分析非常陌生 我有点困惑如何对我的基因列表进行分析 我有一个基因列表 n 10 gene list SYMBOL ENTREZID GENENAME 1 AFAP1 60312 actin filament associated
  • Makefiles:从一个目录获取.cpp,并将编译后的.o放在另一个目录中

    我正在开发适用于移动设备 Windows Mobile 6 和 Android 的跨平台 2D 引擎 我的 Windows 版本已基本准备就绪 但我仍需要确保 Android 上也提供相同的功能 我想要的是一个Makefile在项目的根目录
  • 外部化各种 React 组件中的通用函数

    在不同的components在样式或其他方面我使用相同的功能 其中一些函数使用this setState 我想将所有这些函数收集在一个公共位置 因此在重写它们时 我不必在所有组件中重写它们 而只需在一个文件中重写它们 但是 我不知道如何写t
  • Unicode字符串的跨平台迭代(使用ICU计算字素)

    我想迭代每个字符一个 Unicode 字符串 处理每个代理对并将字符序列组合为一个单元 一个字素 Example 文本 由代码点组成 U 0928 U 092E U 0938 U 094D U 0924 U 0947 其中 U 0938 a
  • 如何更改反应导航中的后退按钮路线

    我正在使用反应导航 堆栈导航 我想更改我的标题后退按钮图标路线 Home 订票 我的预订 这些是我项目中的屏幕 现在 当我单击 MyBookings 屏幕中的标题后退按钮时 它应该路由到主屏幕 如果您的 stackNavigator 堆栈配
  • Git 术语:tip 和 HEAD 之间的区别?

    和Git有什么区别HEAD and tip 抱歉 如果在其他地方有人问过这个问题 没有看到任何其他关于此的问题 From 吉特词汇表 https git scm com docs gitglossary html 可能通过git help
  • 使用opencv在灰度图像中绘制彩色矩形

    是否可以使用opencv在灰度图像中绘制彩色矩形 我尝试了几种方法 但整个图像要么变成灰度 要么变成 RGB 您不能获得混合的灰色和彩色图像 你可以看看有没有办法在同一图像opencv C 上同时拥有灰度和RGB像素 https stack
  • 如何为幻灯片中的每个图像添加链接?

    我使用了 为什么这张幻灯片闪烁 中的代码 彼得在网站上给出了您的答案之一 它工作得很好 没有任何闪烁 但我的问题是如何为每个图像添加超链接 我把代码贴出来供大家参考 Script function Edit these Assumes yo
  • jQuery $(window).resize() 在减小窗口高度时不起作用

    我有一个 id 为 main 的 div 我想使用 jQuery 设置它的高度并使其在window resize它的高度是使用函数修改的 但由于某种原因 它仅在增加窗口高度时才能正常工作 而在减小窗口高度时则不起作用 这是JS functi
  • 设置 sendBufferSize() 后,UDP 套接字的消息太长

    我正在尝试发送 UDP 数据报 包含协议缓冲区消息 并收到消息太长的异常 java io IOException Message too long at java net PlainDatagramSocketImpl send Nativ