我有一个通过单个套接字连接到服务器的 DLL。 我面临以下问题:如果服务器的 IP 地址和端口为假或服务器已关闭,则使用此 DLL 的应用程序会卡住半分钟。 我的想法是使用非阻塞套接字来避免该问题,方法是显示一个指示连接进度的窗口,并允许取消此过程。 但是我没有窗口处理程序,怎么能使用 WSAAsyncSelect 函数呢?
最佳答案
如果你想使用 WSAAsyncSelect 类型的套接字,那么你的 Dll 将需要创建至少一个消息窗口来处理套接字事件。由于窗口将永远不可见,因此它的 WindowProc 将仅包含一个处理程序,用于您的自定义消息 (WM_USER+1),可能是您传递给 WSAAsyncSelect 的 - 其他一切都直接进入 DefWindowProc。
无论如何,您都必须在连接时创建一个无模式的进度窗口以显示您的连接 UI。
关于c++ - DLL 中的非阻塞套接字(无窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790284/