1

我正在尝试调整 TCP 以在实时通信中正常工作。为此,规范之一是强制 TCP 接受应用程序写入的新数据,即使缓冲区已满,这也会使 TCP 有时“不可靠”。这样,应用程序写入调用永远不会被阻塞,并且发送方应用程序的时间不会被破坏。我认为NS2中必须有一个选项才能使它成为可能。那么,如何强制 TCP 丢弃缓冲区中最旧的数据段并接受应用程序在 NS2 中写入的新数据?

4

2 回答 2

3

你不能。TCP 是一个“可靠的流”。任何允许删除数据的功能都与该目标背道而驰,因此没有此类支持。

如果您希望能够删除数据,那么如果您想要“最可靠的交付”而不是“尽力而为”,那么您将不得不切换到 UDP 之类的东西并实现自己的窗口/重试。

于 2012-10-16T14:16:27.417 回答
1

如果您无论如何都要删除数据,请在将其发送到套接字之前将其删除。您可以使用 select 来查看套接字是否可用于写入,如果不可用,则在应用层删除数据。如果您拥有最新的最新数据至关重要,那么请参阅 Brian 的回答。

编辑

在旁注中,您可能想在谷歌上搜索实时网络协议,并查看已经存在的协议。

于 2012-10-16T15:10:51.627 回答