我们正在使用TCPIP连接。gPinstamper1ThreadComponent:= TIDThreadComponent.Create()启动。当连接丢失(电缆未连接)时,套接字错误#10054出现。此时线程也已停止。如何重置错误(再次连接电缆后)以及如何重新启动线程。我希望你能帮我,致上最好的问候,Johannes重新启动线程,但总是遇到错误。
vybvopom1#
你不能只重置套接字错误。10054是一个致命错误,连接是死的。你必须完全关闭套接字并创建一个新的。假设你使用的是TIdTCPClient,只需Disconnect()它,Clear()它的InputBuffer任何未读的数据,并重新-Connect()它。线程一旦终止就不能重新启动。必须关闭它并启动一个新线程。对于TIdThreadComponent,这意味着调用它的Stop()和Start()方法,或者将它的Active属性切换为False,然后再切换回True。对于您所尝试的,我建议将TIdThreadComponent设置为Loop=True,其中每个循环迭代连接TCP客户机,完成其工作,然后断开连接,并进行适当的错误处理以防止线程终止。
10054
TIdTCPClient
Disconnect()
Clear()
InputBuffer
Connect()
TIdThreadComponent
Stop()
Start()
Active
False
True
Loop=True
1条答案
按热度按时间vybvopom1#
你不能只重置套接字错误。
10054
是一个致命错误,连接是死的。你必须完全关闭套接字并创建一个新的。假设你使用的是TIdTCPClient
,只需Disconnect()
它,Clear()
它的InputBuffer
任何未读的数据,并重新-Connect()
它。线程一旦终止就不能重新启动。必须关闭它并启动一个新线程。对于
TIdThreadComponent
,这意味着调用它的Stop()
和Start()
方法,或者将它的Active
属性切换为False
,然后再切换回True
。对于您所尝试的,我建议将
TIdThreadComponent
设置为Loop=True
,其中每个循环迭代连接TCP客户机,完成其工作,然后断开连接,并进行适当的错误处理以防止线程终止。