【发布时间】:2014-11-14 23:05:02
【问题描述】:
我正在尝试创建一个支持超时参数的connect 包装器。
主函数应该是这样的:
function ConnectToHost (Host : PAnsiChar; Port : Word; Timeout: DWORD): Integer;
我也希望尽可能简单,并将套接字保持在阻塞模式。
此外,我们的想法是使用纯 Winsock API,不使用 Indy 组件或任何东西。
主函数应返回一个整数,以获取有关所发生事件的更多信息。
我在考虑主要由 connect 函数返回的返回值以及超时信息的附加值。
在主函数内部有一个线程负责连接,而主函数在给定的超时时间内等待线程。
现在担心将Host和Port等数据传递给线程和Memory Leaks。
我正在考虑使用这些 API 进行超时操作:
CreateThreadWaitForSingleObjectGetExitCodeThread-
TerminateThread?
以及这些使用 winsock 进行 TCP 连接的 API:
sockethtonsinet_addrconnect
考虑到超时,安全的 connect 包装器看起来如何?
现在我似乎不知道如何才能做到这一点。任何帮助,将不胜感激。
【问题讨论】:
-
Indy 实现了线程连接超时。你可以看看它是怎么做的。
标签: multithreading delphi sockets tcp winsock