Winsock侦听和接受函数(C++)
如果我在一个无限循环中有一个监听套接字,在运行accept函数之前,有没有办法知道是否已经与它建立了连接? 我希望能够在执行之前执行一些操作:Winsock侦听和接受函数(C++),c++,winsock,listen,C++,Winsock,Listen,如果我在一个无限循环中有一个监听套接字,在运行accept函数之前,有没有办法知道是否已经与它建立了连接? 我希望能够在执行之前执行一些操作: sock_connection[0] = accept(sock_listen, (SOCKADDR*)&Address, &AddressSize) 具体来说,正如您所看到的,我的sock_connection[0]变量是一个数组。现在,在我实际接受连接之前,我希望能够遍历这个数组,它应该返回数组中的一个可用点,而不是现在的0 那么,
sock_connection[0] = accept(sock_listen, (SOCKADDR*)&Address, &AddressSize)
具体来说,正如您所看到的,我的sock_connection[0]变量是一个数组。现在,在我实际接受连接之前,我希望能够遍历这个数组,它应该返回数组中的一个可用点,而不是现在的0
那么,在运行accept之前有没有办法检测连接?使用动态容器不是更容易吗 比如:
vector<int> socket_pool;
int connection = accept(sock_listen, (SOCKADDR*)&Address, &AddressSize);
if (connection > 0)
socket_pool.push_back(connection);
如果线程在select调用中被阻塞,您将无法为这些套接字上的io事件提供服务。@事实上,我没有用阻塞套接字尝试过这一点,但是我在非阻塞套接字服务器中使用了这一策略,效果很好。谢谢你的评论。