连接拒绝问题

yomi 2003-10-15 06:03:11
我准备对服务器做压力测试,服务器用完成端口开发,但是接收连接是用一个线程完成,m_hListenSocEvent只关心Accpt事件。核心代码如下:
dwRet = WSAWaitForMultipleEvents(1,&pThis->m_hListenSocEvent,FALSE, 500, //等待 FALSE);
if (WSA_WAIT_TIMEOUT == dwRet || WAIT_IO_COMPLETION == dwRet)
continue;
nRet = WSAEnumNetworkEvents(pThis->m_socListen,pThis->m_hListenSocEvent, &events);
if (events.lNetworkEvents & FD_ACCEPT)
{
if (events.iErrorCode[FD_ACCEPT_BIT] == 0)
{
clientSocket = WSAAccept(m_socListen,NULL,NULL,NULL,0);

...

客户端同时开100个线程,每个线程开一个socket与服务器连接。
while(i++<100)
CreateThread(....)

但是有许多连接被拒绝,当线程数在50左右的时候,有些时候全部通过,有些时候有些被拒绝,被拒绝的速度很快,不是因为超时连接不上。

我想请问这是什么原因,是客户端还是服务端的问题?
...全文
71 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CounterHack 2003-10-20
  • 打赏
  • 举报
回复
up
fanfyj 2003-10-18
  • 打赏
  • 举报
回复
up
sevencat 2003-10-17
  • 打赏
  • 举报
回复
我也碰到过的,后来我每两次连接中间加个
sleep(20)
就好多了。
不过我不是用的多线程我是用的select去连接的。
yomi 2003-10-17
  • 打赏
  • 举报
回复
用AcceptEx解决了。
结贴。
microyzy 2003-10-16
  • 打赏
  • 举报
回复
被拒绝是很正常的啊,因为等待队列已经满了,你需要提高accept的效率
Pipi0714 2003-10-16
  • 打赏
  • 举报
回复
你对API函数不熟悉最好用MFC的CSocket类来做
yomi 2003-10-16
  • 打赏
  • 举报
回复
还有,我在listen函数中指定的队列长度远大于最大并发连接数100,
为什么队列会慢?
yomi 2003-10-16
  • 打赏
  • 举报
回复
Pipi0714(皮皮0714) ,
CSocket来做什么?服务器?客户端?


microyzy(毛毛叉) ,
我觉得你说的有道理,是否用AcceptEx用完成端口响应会更好?

bulesnow 2003-10-15
  • 打赏
  • 举报
回复
帮你up
studyingpersons 2003-10-15
  • 打赏
  • 举报
回复
gz

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧