问题标签 [bytebuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14047 浏览

java - java nio和ByteBuffer问题

我遇到了一个问题。我使用 nio socket 来接收消息。收到完整消息后,我将保存收到消息的 dataBuffer 发送给另一个用户。但下面有例外。问题出在哪里?我尝试调用 dataBuffer.duplicate() 并将其写出来。但是在接收方,读操作会抛出这样的异常。我必须分配一个新的 ByteBuffer 并制作一个新的消息副本并将其写出来。在这种情况下,没有错误。但我不想要复制步骤。有没有其他方法可以解决它?

抛出异常

代码

0 投票
2 回答
111 浏览

java - 向多个接收者写入具有不同标头的大消息的效率问题

有一个字符串(消息正文)和 3 个不同的标头要使用 java nio 套接字发送给 3 个用户。

一种方法是创建一个大字节缓冲区并将消息正文放在某个位置并将标头放在消息正文的前面。

这样,我仍然需要为邮件正文复制一份并重写标题。在我的项目中,消息正文大约为 14 K 字节。如果内存页为 2K 字节,则内存效率管理效率不高。

我的问题:有没有办法避免将大消息字符串复制到字节缓冲区?我猜C可以使用指针来支持它。这是真的吗?

谢谢。

0 投票
3 回答
1204 浏览

java - Java XML 解析

我有一个文件,其中依次包含几个 XML 文档,如下所示。

重复几次。

我使用 Java,我为文件打开了一个 FileChannel,我有一个字节缓冲区要读取。如果有内置方式或更简单的方式或已经解决的方式来使用 Java 对 XML 字节进行部分解析,将不胜感激。例如像这样:

0 投票
1 回答
7643 浏览

java - 如何使用 java.nio.channels.FileChannel 读取到 ByteBuffer 实现类似 BufferedReader#readLine() 的行为

我想用来java.nio.channels.FileChannel从文件中读取,但我想像每行一样读取行BufferedReader#readLine()。我需要使用java.nio.channels.FileChannel而不是java.io因为我需要在文件上加锁,并从该锁文件中逐行读取。所以我被迫使用java.nio.channels.FileChannel. 请帮忙

编辑这是我尝试使用 FileInputStream 获取 FileChannel 的代码

当代码在这里时lock = channel.lock();,它立即转到finally并且lock仍然是null,所以lock.release()生成NullPointerException。我不确定为什么。

0 投票
2 回答
4315 浏览

java - Android 异步 USB 读取到 ByteBuffer,但无法确定大小

我正在使用最近添加的适用于 Android 的 USB API 从 Android 3.1 操作系统(在摩托罗拉 Xoom 上)上基于 FTDI 的 USB 设备读取字节:http: //developer.android.com/guide/topics/usb/host。 html

但是,我在进行异步读取时遇到了问题。

此函数从设备中正确读取字节。但是,它并没有告诉我阅读了多少。bb.position() 始终返回 0,bb.remaining() 始终返回 128。我无法确保我的读取将返回 128 个字节(可能读取,例如请求设备的状态,仅发送回大约 12 个字节),我有无法确定读取结束的位置以及 ByteBuffer 中的垃圾开始的位置。我试过倒带 ByteBuffer 但标记没有被读取设置。有什么方法可以准确地确定读取了多少字节?

谢谢

0 投票
2 回答
4267 浏览

java - 将字节数组转换为整数的有符号和无符号类型的 Java ByteBuffer 问题

我期待这个:

然而,以下是真实的:

我如何解决 Java 对有符号/无符号类型的许多限制,还是我需要完全自己动手?

0 投票
1 回答
1982 浏览

java - 如何在本机中写入/读取直接 ByteBuffer?

我想从本机部分的套接字接收数据,然后读取 Java 代码中的数据。我知道直接 ByteBuffer 可能是一个不错的选择。所以我在Java中准备了一个ByteBuffer,比如

我通过以下代码在本机中得到这个 ByteBuffer

现在,我的愚蠢问题是

(1) 仅从语句“socketfd = fd”中获取 int 类型变量 socketfd 是否正确???(fd 是 jint 类型,在 Linux 中它确实是一个套接字 fd) (2) 我如何在 C 中将数据写入这个 ByteBuffer ???

确实,...我的情况是我在另一个本机 C++ 函数中获得了 Linux 套接字 fd,但是,我无法在其中添加我想要的函数。我想用这个 fd 来读/写数据,但我知道在 Java 代码中这是不可能的。所以我决定将它传递给本机并使用直接 ByteBuffer 来存储临时数据。

有什么建议吗?

谢谢你。

0 投票
1 回答
1015 浏览

java - 解码一个 ByteBuffer,一个 snmp 陷阱消息的结果

我正在使用它来接收 snmpv1 陷阱消息:

我的问题是我不知道如何解析byteBuffer以清晰地获取代理发送的数据。如果我现在执行我的代码,这就是我得到的:

我已经尝试过其他一些MutableType,但我真的很困惑该使用哪一个。它是否正确?如果是这样,您知道MutableType使用哪个吗?

0 投票
3 回答
2606 浏览

java - 如何提高读取 InputStream 的性能?

这很可能只是一个 KISS 时刻,但我觉得无论如何我都应该问。

我有一个线程,它正在从套接字 InputStream 读取。由于我正在处理特别小的数据大小(因为我可以期望接收的数据是 100 - 200 字节的顺序),我将缓冲区数组大小设置为 256。作为我的读取功能的一部分,我有一个检查这将确保当我从 InputStream 中读取所有数据时。如果我没有,那么我将再次递归调用 read 函数。对于每个递归调用,我将两个缓冲区数组重新合并在一起。

我的问题是,虽然我从没想过会使用超过 256 的缓冲区,但我想保证安全。但是,如果绵羊开始飞行并且缓冲区明显更多,则读取函数(通过估计)将开始花费更多时间来完成指数曲线。

如何提高读取功能和/或缓冲区合并的效率?

这是当前的读取功能。

编辑:我是不是偏执狂(不合理),应该将缓冲区设置为 2048 并称之为完成?

0 投票
2 回答
9352 浏览

java - 如何从 ByteBuffer 中获取连续切片?

我有一个包含大文件(100 MB)的ByteBuffer :

我一次只能合法地写入 1 MB writeChannel

如何对 ByteBuffer 的内容进行切片并一次仅将 1 MB 切片写入writeChannel?