gpt4 book ai didi

java - 将 UDP 套接字绑定(bind)到多个端口

转载 作者:行者123 更新时间:2023-11-30 17:43:14 26 4
gpt4 key购买 nike

我可以在多个端口上绑定(bind)UDP套接字吗?

我知道答案可能是否定的,但我需要这个。

我在不同端口上有多个 UDP(多播)流要接收,并且我希望不同流之间接收数据包的顺序与到达 NIC 的数据包顺序相同。

将套接字绑定(bind)到每个端口似乎是不可能的,因为从流中读取数据包的顺序将取决于 UDP 接收缓冲区以及执行线程以从不同流接收数据包的方式。

我正在寻找 Java 中的解决方案,但如果仅在 C 中可能,我将切换到该解决方案。

请帮我解决这个问题。

编辑

我需要的顺序,因为我正在开发 MPEG TS (H.222) 上的应用程序,它将将从不同多播接收的 TS 流重新复用为单流 (MPTS),然后作为单流重新传输。我希望以非常准确的顺序混合来自不同流的数据包,很少出现乱序。

如果我从多个多播中捕获数据包,以便它们到达 NIC,我可以获得准确的顺序,很少会由于从源到我的应用程序的中间抖动而出现乱序。很少出现故障不是问题。所有组播源和我的应用程序都仅在 LAN 中。

当多播流的速率较低(例如 20 Mbps 左右)时,一切正常。但是,当多播流的速率非常高(例如超过 50 Mbps)时,某些接收器线程可能会由于 CPU 的原因而处于空闲状态,即使它有从 UDP 获取的数据包。当线程空闲大约 50 毫秒(速度为 60 Mbps)时,50 毫秒内将会产生大量数据,这将在最终队列中的该流中产生该时间的间隙。

最佳答案

Java和C与此无关。这是不可能的。套接字表示绑定(bind)到单个本地端口的端点。期间。

无论如何,也很难看出它如何解决您的问题。

关于java - 将 UDP 套接字绑定(bind)到多个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com