我正在尝试调整TCP以便在实时通信中正常工作。要做到这一点,规范之一是强制TCP接受应用程序写入的新数据,即使缓冲区已满,这使得TCP有时“不可靠”。这样,应用程序写入调用永远不会被阻止,并且发送者应用程序的时间不会被破坏。 我认为NS2必须有一个选项才能实现。 那么,如何强制TCP丢弃缓冲区中最旧的数据段并接受NS2中应用程序写入的新数据?
答案 0 :(得分:3)
你做不到。 TCP是“可靠的流”。任何允许删除数据的功能都会与该目标相反,因此没有这样的支持。
如果您希望能够删除数据,那么您将不得不切换到类似UDP的东西并实现自己的窗口/重试,如果您想要“最可靠的交付”而不是“尽力而为”。
答案 1 :(得分:1)
如果您要丢弃数据,只需将其丢弃即可将其发送到套接字。您可以使用select来查看套接字是否可用于写入,如果没有将数据放在应用程序层。如果您拥有最新的最新数据至关重要,请参阅Brian的回答。
修改强>
在旁注中,您可能希望谷歌搜索实时网络协议,并查看已存在的内容。