Delphi Indy TCP SSL多线程

Delphi Indy TCP SSL多线程,delphi,indy,Delphi,Indy,我正在开发使用IdTCPClient交换二进制数据的应用程序。我创建线程用于读取数据套接字,但用于使用主线程发送数据。它很好用。 但当我使用SSL时,它有时会工作,但有时(经常)会随机发生错误。我有以下错误 SSL3\u获取\u记录:版本号错误 分组密码本是错误的 如何解决此问题您可以先在q中添加一个。线程之间不能共享单个IdTCPClient。“它大部分时间都能工作”并不意味着它没有坏。将读写合并到一个线程中。@J。。。“单个IdTCPClient不能在线程之间共享”-这根本不是真的。与多

我正在开发使用IdTCPClient交换二进制数据的应用程序。我创建线程用于读取数据套接字,但用于使用主线程发送数据。它很好用。 但当我使用SSL时,它有时会工作,但有时(经常)会随机发生错误。我有以下错误

  • SSL3\u获取\u记录:版本号错误
  • 分组密码本是错误的

如何解决此问题

您可以先在q中添加一个。线程之间不能共享单个IdTCPClient。“它大部分时间都能工作”并不意味着它没有坏。将读写合并到一个线程中。@J。。。“单个IdTCPClient不能在线程之间共享”-这根本不是真的。与多个线程共享连接,在一个线程中读取,在另一个线程中写入,这是非常有效/常见的。您需要避免的是在多个线程中执行读取,或者在多个线程中执行写入(无论如何,没有足够的同步)。我怀疑OP可能在多个线程中进行读取,从而损坏入站数据。“将您的读写操作合并到一个线程中”——这是不必要的。@RemyLebeau很公平——更准确地说,您不能在线程之间不加考虑地共享客户机。正如Martyn所说,我们需要一个@RemyLebeau感谢您的建议,我刚刚找到了问题的根本原因,当有两个不同的线程同时访问套接字进行写入时,就会发生这种情况。所以我决定对所有将写入套接字的进程进行排队。