list<SOCKET>lstClient;
while(1)
{
sockClient=accept(sockSrv,(SOCKADDR*)&addrConn,&len);
if (sockClient==INVALID_SOCKET || sockClient==SOCKET_ERROR)
{
continue;
}
lstClient.push_back(sockClient);
}当我把做好的服务端发布到互联网上之后,然后用模拟的压力测试工具创建了500个客户端并发连接服务端,在服务端显示了
lstClient的数量(当前在线客户端数量),发现lstClient.size()总是大于500,总会多几个。
注:1、确定没有任何其他人会连我的这个服务程序;
2、这个现象在局域网或者本机测试不会出现。
个人感觉不安全对这个问题,最简单的方法是 DUMP 一下所有连接的IP 和PORT
也许是压力测试软件因为某次连接超时 然后重新尝试连接导致的
lstClient.unique
然后应该是500,否则就是还有人连了。
如果是500,就说明有些连接被重复发了,估计和TCP重传机制有关
通过工具看服务端已经连上的客户端数量,是正确的。
异步的也试过,现象一样。