C++ 如果服务器未在接受调用中等待,则使连接失败

C++ 如果服务器未在接受调用中等待,则使连接失败,c++,winsock,C++,Winsock,我需要创建一个服务器套接字,它应该拒绝一个连接请求,如果它在接受调用时没有阻塞的话 服务器的行为将是 a。等待客户端连接 B等待客户端关闭连接 C转到步骤a 如果服务器正在等待客户端连接关闭,则应立即拒绝客户端连接调用。我们无法在获得客户端连接后关闭服务器套接字 这可能吗?您所要求的在服务器端根本不可能实现。当挂起的连接仍在队列中等待接受时,根本无法拒绝该连接。在调用listen()时,您可以(也应该)将backlog值设置为1,但这只意味着在您与另一个客户端进行主动通信时,队列中最多可以有1个

我需要创建一个服务器套接字,它应该拒绝一个连接请求,如果它在接受调用时没有阻塞的话

服务器的行为将是

a。等待客户端连接
B等待客户端关闭连接
C转到步骤a

如果服务器正在等待客户端连接关闭,则应立即拒绝客户端连接调用。我们无法在获得客户端连接后关闭服务器套接字


这可能吗?

您所要求的在服务器端根本不可能实现。当挂起的连接仍在队列中等待接受时,根本无法拒绝该连接。在调用
listen()
时,您可以(也应该)将backlog值设置为1,但这只意味着在您与另一个客户端进行主动通信时,队列中最多可以有1个连接。您必须调用
accept()
以从队列中删除挂起的连接,然后如果您当时不想与该客户机通话,则必须立即对其调用
closesocket()


您可以做的是调用
wsaaaccept()
而不是
accept()
,这样您就可以根据需要分配一个回调函数,返回
CF\u REJECT
CF\u accept
,然后您需要在线程或重叠I/O中连续调用
wsaaaccept()
,从队列中删除挂起的连接,并在与已接受的连接通信时拒绝这些连接,直到将其关闭。

您发布的步骤似乎相对简单。客户端连接后,在该客户端断开连接之前,不要再次调用
accept()
函数。@Chad:客户端连接调用会阻塞一段时间,只有它失败了。我想让它立即失败。客户端连接失败是因为什么错误?10061应使其立即返回。