【发布时间】:2013-12-16 12:24:27
【问题描述】:
我正在尝试为 UDP 和 TCP 抽象 NIO 通道。 DatagramChannel 和 SocketChannel 已经很相似了。但是我遇到了一个问题。我现在正在尝试创建一个 DatagramChannelServer,而不是 ServerSocketChannel。我所做的是我将一个未连接的 DatagramChannel 实例化为服务器,在任何读取操作上我创建一个新的 DatagramChannel 连接到接收到的地址。所以我有一个未连接的 DatagramChannel,它应该接收来自所有未连接源的传入数据和连接的 DatagramChannel,它接收来自连接源的所有数据。
但这不起作用,因为所有接收到的数据,无论是否来自连接的源,都由未连接的 DatagramChannel 接收。你能以某种方式优先考虑键是句柄的顺序,以使连接的数据报通道优先于未连接的数据报通道吗?还是有另一种优雅的解决方案来解决这个问题?
此时我有一个(在我看来)非优雅的解决方案,它从未连接的 DatagramChannel 中获取数据并将其插入到各自连接的 DatagramChannel 中。但是我希望有一个更适合框架的解决方案。
有人知道如何巧妙地做到这一点吗?
【问题讨论】: