我有一个 Delphi 6 应用程序,它通过套接字与外部硬件设备交换音频数据。硬件设备内部存在问题,有时其内部缓冲区处理速度会变慢,尤其是在长时间使用期间,并且令人讨厌的延迟会蔓延到音频流中。这是一个重大问题,因为音频数据经常是人们之间双向实时对话的基础。但是,断开连接并重新建立连接可以解决问题。
我知道如何用 Indy 关闭/断开套接字,这很容易。我担心如果我尝试重新连接太快,Indy 中的某些连接缓存机制或 Windows 套接字层本身可能会破坏我的断开连接。有没有办法确保与外部硬件设备的套接字连接真正断开?最好问一下,有没有办法确保我的重新连接尝试强制创建一个新的套接字(句柄?)而不是重新使用旧的套接字连接?
外部硬件设备仅在创建全新连接时“重置”,可能是因为它刷新其内部队列并重新开始(我的猜测是因为我没有设备的源代码)。