繁体   English   中英

使用专用 DatagramSockets 发送和接收 UDP 数据报是否有(性能)优势?

[英]Is there a (performance) benefit in having dedicated DatagramSockets for sending and receiving UDP datagrams?

我有一些数据报 sockets,一个用于输入,另一个用于具有不同端口的 output。 有什么理由这样做吗? 是为了最好的表现吗?

| <- Receiver, accept and accumulate some packets received from client
| <-> Proccess, request packets from Receiver, process and put some response into Sender
| -> Sender, just immediate send

我正在考虑结合接收器和发送器并使用一个套接字。 Receiver 和 Sender 是一些模块。 它们可以在程序的其他部分初始化(例如在其他模块之间通过网络进行的通信)。

没有性能优势,因为使用两个 sockets 的数据不会比使用一个更快或更多。

使用不同的 udp sockets 进行接收和发送还有其他充分的理由,这与应用协议的设计方式和可靠性有关。

每个套接字都有自己的发送和接收缓冲区。 如果这些缓冲区中的任何一个变满,数据包将被丢弃。 换句话说,将单个套接字用于多种用途可能会增加丢包的风险。

此外,对于不同的 sockets,您可以使用不同的本地端口。 不同本地端口的一个好处是它为您提供了一种为不同客户端处理单独数据包流的简单方法。 您可以在 TFTP 协议https://en.m.wikipedia.org/wiki/Trivial_File_Transfer_Protocol的设计中看到一个这样的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM