c++ - DLL 中的非阻塞套接字(无窗口)

标签 c++ windows dll sockets winsock

我有一个通过单个套接字连接到服务器的 DLL。 我面临以下问题:如果服务器的 IP 地址和端口为假或服务器已关闭,则使用此 DLL 的应用程序会卡住半分钟。 我的想法是使用非阻塞套接字来避免该问题,方法是显示一个指示连接进度的窗口,并允许取消此过程。 但是我没有窗口处理程序,怎么能使用 WSAAsyncSelect 函数呢?

最佳答案

如果你想使用 WSAAsyncSelect 类型的套接字,那么你的 Dll 将需要创建至少一个消息窗口来处理套接字事件。由于窗口将永远不可见,因此它的 WindowProc 将仅包含一个处理程序,用于您的自定义消息 (WM_USER+1),可能是您传递给 WSAAsyncSelect 的 - 其他一切都直接进入 DefWindowProc。

无论如何,您都必须在连接时创建一个无模式的进度窗口以显示您的连接 UI。

关于c++ - DLL 中的非阻塞套接字(无窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790284/

相关文章:

windows - 有没有办法在 SVN 仓库中设置文件。在结帐时被自动忽略?

windows - 如何子类化 Windows 资源管理器的窗口

c# - 配置系统无法从 c# com dll 初始化

visual-c++ - 查询 : Integrating libsndfile with Visual Studio 2010 C++. 错误 : libsndfile. dll 找不到

c++ - 为什么不能在解决原始问题之前在 Gecode 中克隆 `Space`?

c++ - 安全移动 C++ 对象

c++ - gcc 优化

windows - Windows 10:使用2个麦克风而不混合输入

delphi - 在Delphi中用指针调用DLL

c++ - 在 Direct3D9 中启用抗锯齿(多采样渲染目标)