MFC Csocket 设置非阻塞
时间: 2023-10-31 14:05:39 浏览: 165
MFC实现非阻塞Socket通信
在 MFC 中,可以通过以下步骤来设置 CAsyncSocket 的非阻塞模式:
1. 创建一个 CAsyncSocket 对象。
2. 在创建的 CAsyncSocket 对象上调用 Create 方法。
3. 调用 CAsyncSocket 对象的 GetSockName 方法获取套接字描述符。
4. 调用 Windows API 函数 ioctlsocket,设置套接字为非阻塞模式。
下面是一个示例代码:
```c++
CAsyncSocket sock;
if (!sock.Create())
{
// 创建套接字失败
return;
}
// 获取套接字描述符
SOCKET hSocket = sock.Detach();
// 设置套接字为非阻塞模式
u_long nonBlocking = 1;
if (ioctlsocket(hSocket, FIONBIO, &nonBlocking) == SOCKET_ERROR)
{
// 设置非阻塞模式失败
return;
}
// 重新将套接字绑定到 CAsyncSocket 对象上
sock.Attach(hSocket);
```
在上面的示例代码中,我们先调用了 CAsyncSocket 对象的 Detach 方法,将套接字描述符从 CAsyncSocket 对象上分离出来。然后,我们调用 Windows API 函数 ioctlsocket,将套接字设置为非阻塞模式。最后,我们调用 CAsyncSocket 对象的 Attach 方法,将套接字描述符重新绑定到 CAsyncSocket 对象上。
阅读全文