wsaaccept拒绝客户端后出现syn_received,求助解决
首先我服务器向对客户端连接来的IP进行过滤,所以我采用wsaaccept函数,设置了回调函数在回调函数里面验证IP地址。
下面是步骤:
1 在listen之前setsockopt来设置回调函数返回后wsaaccept才能返回。
2 wsaeventselect设置FD_ACCEPT,这样有客户端连接进来就会有提示。
3 wsaaccept设置好回调函数。
现在的问题来了。
当客户端的ip在黑名单中,回调函数返回CF_REJECT.wsaaccept返回值是INVALID_SOCKET,这里都是和我们想要的是一样的。wsagetlasterror返回WSATry_Again。与此同时客户端的wsaconnect连接失败,错误代码是超时。
当有新的连接再连接进来的时候,服务端FD_ACCEPT不会再有响应。
我用netstat -an 查看,发现服务端端口和客户端第一连接进来的端口还在syn_received也就是还在syn握手。
我想问怎么关闭它的握手,以便能接受下一次的客户端连接。
谢谢