社区
C++ 语言
帖子详情
服务器 几秒钟 处理一客户端
wuyanchao
2009-07-22 02:21:13
小弟,刚刚接触网络编程这块,碰到一个问题,服务器的代码 在运行过程有时会出错,原因在于 客户端那边,如果突然出错,服务器的代码 没有执行完 全部的代码 导致出错。
所以 我在想 有没有让服务器在规定时间,比如5秒处理完一个客户端,然后就结束,如果没有处理完,也强制关闭此连接。谢谢了,不胜感激~代码最好用c的
...全文
119
9
打赏
收藏
服务器 几秒钟 处理一客户端
小弟,刚刚接触网络编程这块,碰到一个问题,服务器的代码 在运行过程有时会出错,原因在于 客户端那边,如果突然出错,服务器的代码 没有执行完 全部的代码 导致出错。 所以 我在想 有没有让服务器在规定时间,比如5秒处理完一个客户端,然后就结束,如果没有处理完,也强制关闭此连接。谢谢了,不胜感激~代码最好用c的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
movaxeffext
2010-06-01
打赏
举报
回复
while(1)
{
int ret;//return select
printf("start\n");
memset(mbuf,0,MB);
new_fd=accept(sock_fd,(struct sockaddr *)&their_addr,&len);
if (new_fd<=0)
{
perror("accept");
continue;
}
printf("accept1\n");
while(1)
{
FD_ZERO(&fdsr);//read
FD_SET(new_fd,&fdsr);
tv.tv_sec=30;
tv.tv_usec=0;
ret=select(new_fd+1, &fdsr, NULL, NULL, &tv);
if (ret== -1)
{
perror("select1");
break;
}
else if (ret== 0)
{
//printf("timeout close\n");
break;
}
else
{
if (FD_ISSET(new_fd,&fdsr))
{
int i=0;
char tem[1000];
memset(tem,0,1000);
len = recv(new_fd,tem , 6, 0);//先收取数据长度
//strcat(mbuf,tem);
//printf("\n接受长度:%s\n",tem);
if (len > 0)
{
char a[10];
memset(a,0,10);
strncpy(a,tem,6);
//printf("a%s\n",a);
int datalen=atoi(a);
printf("datalen:%d\n",datalen);
if(datalen>1000)
{
if((10000<datalen) && (datalen<=80000))
sleep(1);
else if(datalen<=120000)
sleep(2);
else
sleep(3);
int f1=0,f2=0,f3=0;
for(i=0;i<datalen-1000;i=i+1000)
{
memset(tem,0,1000);
recv(new_fd,tem,1000,0);
strncat(mbuf,tem,strlen(tem));
if(strlen(mbuf)>=25000&&f1==0)
{sleep(3);f1=1;}
if(strlen(mbuf)>=50000&&f2==0)
{sleep(2);f2=1;}
if(strlen(mbuf)>=75000&&f3==0)
{sleep(2);f3=1;}
if(strlen(mbuf)>=100000&&f3==0)
{sleep(2);f3=1;}
//printf("tem:%slen:%d\n",tem,strlen(tem));
}
}
memset(tem,0,1000);
//printf("剩下:%d\n",datalen-i);
recv(new_fd,tem,datalen-i,0);
printf("last content:%slast len:%d\n",tem,strlen(tem));
strncat(mbuf,tem,strlen(tem));
//printf("111接收消息成功,共%d个字节的数据\n",strlen(mbuf));
if(Analyze_Header(mbuf)>=0)
{
printf("Succeed\n");
break;
}
else
{
printf("Fail\n");
break;
}
}
else {
if (len < 0)
printf
("消息接收失败!错误代码是%d,错误信息是'%s'\n",
errno, strerror(errno));
else
printf("对方退出了,终止\n");
break;
}
}
}
}
memset(mbuf,0,MB);
close(new_fd); //clear
FD_CLR(new_fd, &fdsr);
}
}
gunsand
2009-07-22
打赏
举报
回复
5秒太JB慢了。 处理数据至少要毫秒级的。 否则用户多了怎么办。
5秒后自动切断连接当然可以的。 我有比较好的SERVER架构代码 。你要是有兴趣发站内消息给我。
iambic
2009-07-22
打赏
举报
回复
你这属于逃避问题,结果只会制造更多的问题。找本好点的书好好看看吧。
emyueguang
2009-07-22
打赏
举报
回复
Sleep(5000); //休息5秒
closesocket(s); //断开链接
emyueguang
2009-07-22
打赏
举报
回复
在C中关闭一个SOCKET用closesocket函数
int closesocket(SOCKET s);
--说明
closesocket函数用来关闭一个描述符为s套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。
closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR
wuyanchao
2009-07-22
打赏
举报
回复
[Quote=引用 3 楼 crst_zh 的回复:]
你先看看TCP/IP断开的过程(四次握手)。
[/Quote]
怎么说? 5m后,直接 断开 怎么写代码
crst_zh
2009-07-22
打赏
举报
回复
你先看看TCP/IP断开的过程(四次握手)。
wuyanchao
2009-07-22
打赏
举报
回复
[Quote=引用 1 楼 crst_zh 的回复:]
应该是从容关闭的问题吧。
这样的话你可以考虑使用UDP方式可能更高,由高层来保证可靠性
[/Quote]
怎么从容关闭? 怎么检测?
crst_zh
2009-07-22
打赏
举报
回复
应该是从容关闭的问题吧。
这样的话你可以考虑使用UDP方式可能更高,由高层来保证可靠性
分包图纸查看故障,分包字体合集正常浏览.rar
还在被 CAD 文字乱码、显示问号、字体缺失困扰?这份完整解决方案,绝大多数问题都能搞定,速收,欢迎下载!
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计)
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言
处理
、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频
Hash计算工具 V2.0(支持MD5 SHA0 SHA1 SHA2-256 SHA2-512 SHA3-256 SHA3-512 SM3 SKAP512 GAOD512等哈希算法)
本软件支持一键计算字符串和文件两种输入格式的Hash值 到目前为止支持常见的 { MD5: SHA0: SHA1: SHA2-256: SHA2-512: SHA3-256: SHA3-512: SM3: SKAP512(自研): GAOD512(自研): } 等等Hash算法(密码杂凑算法)
实用代码脚本易语言源码目录监视
实用代码脚本易语言源码目录监视
政府科技管理者如何利用科创数智大脑实现产业政策精准匹配?.docx
政府科技管理者如何利用科创数智大脑实现产业政策精准匹配?
C++ 语言
65,211
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章