代码之家  ›  专栏  ›  技术社区  ›  vach

从套接字到套接字的零分配副本

  •  2
  • vach  · 技术社区  · 7 年前

    假设我们有一个套接字连接(我们称之为 c1 我们有N个其他套接字连接,我们要写完全相同的消息, c2 ...

    简而言之,我们要做的是。 我们有一个事件需要读取字节 c1 我们读取前几个字节并确定我们知道要将其重定向到 . 我们从中获取已经获取的前几个字节 将其写入 c2 现在我们想告诉系统从 c1 c2

    在java中有什么方法可以做到这一点吗?


    使现代化

    虽然答案很关键,但如果您正在构建这样的东西(甚至不仅仅是为了多路复用,而是为了一些小的业务逻辑),我强烈建议您使用ZeroMQ。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Community CDub    4 年前

    假设我们正在做C++,有没有一种方法可以告诉操作系统在不加载到应用程序内存的情况下将数据从一个缓冲区传递到另一个缓冲区?

    可以通过Linux“sendfile”系统调用实现这一点。

    参考:

    但是,Java I/O类库不支持这一点。

    -显然,它得到了支持;请参阅 FileChannel::transferTo 方法查看的答案 FileChannel zero-copy transferTo fails to copy bytes to SocketChannel 例如,该示例显示了它与套接字一起使用。然而,它是否可以用于套接字到套接字的复制尚不清楚。

    -基于对 Using Java to perform Zero Copy data transfers between two or more sockets ,我想答案可能是:“不,不行”。然而

    -这是RFE- https://bugs.openjdk.java.net/browse/JDK-6653061