首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

connect的有关问题

2012-03-31 
connect的问题n多个客户端连接服务端,服务端用的accpet接收,数量太多了就会处理不过来,这时客户端应该怎样

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");
}

}

[解决办法]
先看看吧
[解决办法]
检测端口标志位,如果后台缓冲池满,就等待,直到缓冲池空再连接。

热点排行