欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

connect的有关问题

更新时间: 2015-03-03 15:18:37 责任编辑: Author_N10

 

connect的问题
n多个客户端连接服务端,服务端用的accpet接收,数量太多了就会处理不过来,这时客户端应该怎样处理一下呢?据说是连不上时等会再连,该怎么操作,谁分析下,给个例子,写个伪代码也中!

--参考方法--
一般就是设个超时时间,设的长一点,比如3分钟。再或者就是排队了,就像比较火爆的网游那样排队。
--参考方法--
比如第一次等10秒,第二次等30秒,……,第n次等10+n*20秒。最多10次,第11次不重连而是通知网络系统维护人员。
--参考方法--
只能说服务器太烂啦,哈哈。并发处理连接请求的能力差。该优化的应该是服务器。不过服务器做的很好了还有问题,客户端还是需要优化优化。。
--参考方法--
服务器太慢,网太难烂,不是你的错
--参考方法--
while(1)
{
len = sizeof(struct sockaddr_in);
printf("[%s]--- beging to accept..............\n",__func__);
client_socket = accept(listen_socket, (void*)m_client_addr,(int32_t *)&len);
if(client_socket < 0)
{
printf("[%s]---accept is error!--- [%d]\n",__func__,client_socket);
fprintf(stderr,"Accept error:%s\n",strerror(errno));
switch(errno)
  {
case EBADF:
  printf("+++++++++EBADF\n");
  break;
case EFAULT:
printf("+++++++++EFAULT\n");
break;
case ENOTSOCK:
printf("+++++++++ENOTSOCK\n");
  break;
case EOPNOTSUPP:
printf("+++++++++EOPNOTUPP\n");
break;

case EPERM:
printf("+++++++++EPERM\n");
continue;
case ENOBUFS:
printf("+++++++++ENOBUFS\n");
continue;

case ENOMEM:
printf("+++++++++THis\n");
break;
  case EINVAL:
printf("+++++++++EINVAL\n");
break;
default:
printf("+++++++++Other\n");
}

}

--参考方法--
先看看吧
--参考方法--
检测端口标志位,如果后台缓冲池满,就等待,直到缓冲池空再连接。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2015-03-03 15:18:37
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1176254/
本文WWW.DOC100.NET DOC100.NET版权所有。