社区
网络编程
帖子详情
有好几千个客户端,每隔一个小时往服务端发一个包,如何设计好一点
我看你有戏
2008-02-24 09:28:55
有好几千个客户端,每隔一个小时往服务端发一个包,如何设计好一点
给个思路吧,我现在 是服务端给每个客户端开一个线程
结果服务端老是爆了
需要看哪方面的知识呢
...全文
315
23
打赏
收藏
有好几千个客户端,每隔一个小时往服务端发一个包,如何设计好一点
有好几千个客户端,每隔一个小时往服务端发一个包,如何设计好一点 给个思路吧,我现在 是服务端给每个客户端开一个线程 结果服务端老是爆了 需要看哪方面的知识呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hwsts2
2008-03-06
打赏
举报
回复
最好使用UDP
如果非要用TCP,简单的的模型可能就是 多Thread去select,select有限制,好像只能select 64个SOCKET 需要,当然这个可以解决,这个这种模型的一个难点,就是Thread之间的负载平衡问题。
snowshow
2008-03-06
打赏
举报
回复
就这点数据量
随便一个模型就搞定了
要是我就用UDP做,加上时间戳,一个包发10次。
feihu1983
2008-03-04
打赏
举报
回复
设计服务器 要看你的连接并发量 你的这个量 用事件模型都行 要是想完善 就IOCP 用线程池那就太没必要了 (消息队列不支持DOS 下的东西
zhengv
2008-03-04
打赏
举报
回复
我用IOCP写的一个http web服务器源码,在vc6+sp6下编译,性能还不错。跟你这个模式很相像,可以参考一下。
http://blog.csdn.net/zhengv/archive/2007/12/04/1915244.aspx
我看你有戏
2008-03-04
打赏
举报
回复
控制台程序用CAsynSocket怎么用啊,搞不来啊
nizhaorong
2008-02-26
打赏
举报
回复
DING,重叠IO, TCP/UDP, 线程池?(一个小时就没必要了?)
sxcong
2008-02-26
打赏
举报
回复
“好几千个”,CAsynSocket都支持几千个
“每隔一个小时发一次”
这样的要求一个线程就足够了,用不到池。
UDP不错,TCP也可以,反正一个小时才connect一下,不影响带宽。
为了方便可以直接用CAsynSocket,或者codeproject上面有个支持代理的socket类
我看你有戏
2008-02-26
打赏
举报
回复
讲了这么多了,先谢谢大家的回帖
最好给我个demo,不要用基于MFC的
直接用控制台程序写一个吧,谢谢大虾们
僵哥
2008-02-26
打赏
举报
回复
来个请求开个线程好了,搞个线程记数器,起一个线程+1,线程里执行最后一个语句的时候把线程数目-1,最多让他开200个线程,这样不就好了啊。
==========
做成固定线程的迭代服务器就好了。
开N个线程去Accept,Accept之后就去服务,服务完或者中间出错,间隔一段时间没有命令,就断开(防止恶意连接),再Accept。
zh1369
2008-02-26
打赏
举报
回复
iocp
football
2008-02-26
打赏
举报
回复
来个请求开个线程好了,搞个线程记数器,起一个线程+1,线程里执行最后一个语句的时候把线程数目-1,最多让他开200个线程,这样不就好了啊。
annvily
2008-02-25
打赏
举报
回复
设计服务器模型,重叠I/O。。。
僵哥
2008-02-25
打赏
举报
回复
一般有三种方式。
1、用UDP协议,服务器监听固定的一个端口,收到数据后回发一个数据包告知客户端,如客户端在一定时间内未收到服务器的回应,则自动重发。
2、用TCP协议,服务器监听固定的一个端口,客户端要发送数据时连接服务器,若连接失败则延时一定时间后重试,发送完数据后断开连接。
3、用TCP或UDP协议,客户端监听固定的一个端口,每隔一小时由服务器主动连接客户端索取数据包。
=================
1.这个处理并不一定就能改善楼主的问题,楼主的问题在于处理上面出现问题,而不是如何处理.
2.这个完全脱离了楼主的问题.
3.这里面得理清楚什么是服务器什么是客户机了.并不因为众多就是客户机.通常客户机是一个服务的要求者,服务器才是服务的提供者.
cnzdgs
2008-02-24
打赏
举报
回复
一般有三种方式。
1、用UDP协议,服务器监听固定的一个端口,收到数据后回发一个数据包告知客户端,如客户端在一定时间内未收到服务器的回应,则自动重发。
2、用TCP协议,服务器监听固定的一个端口,客户端要发送数据时连接服务器,若连接失败则延时一定时间后重试,发送完数据后断开连接。
3、用TCP或UDP协议,客户端监听固定的一个端口,每隔一小时由服务器主动连接客户端索取数据包。
jwybobo2007
2008-02-24
打赏
举报
回复
恩,线程池的做法蛮不错的,本身多线程不是真正意义上的同时进行(除非多核处理器)
我看你有戏
2008-02-24
打赏
举报
回复
是这样的基本上发一个包后,服务端就把客户端断开了的
WinEggDrop
2008-02-24
打赏
举报
回复
新学编程?你服务端给每个客户开一线程自然要挂.如果在windows下,默认一个进程最多只能开2028线程(到msdn中查看CreateThread相关资料).换个模式就是.Asynchronous,IOCP等模型都是解决方法.
abuseyoudna1981
2008-02-24
打赏
举报
回复
才发那么一个包,你就爆了,可怜的家伙,用线程池+消息队列.
僵哥
2008-02-24
打赏
举报
回复
使用线程池,而不是一个用户一个线程.否则每一个进程,甚至是整个操作系统,所能同时运行的线程数是有限的.能够开到三千多个线程已经不错了.采用线程池机制,将请求放入队列当中,线程池当中的线程轮循处理.
china_bai
2008-02-24
打赏
举报
回复
在服务器端开一个线程监听,收到一个数据包,开一个线程发送响应数据即可。
每次收到一个包后,回送一个响应,表示接收完毕,响应完毕后,线程结束。
发送方在一定的时间没收到响应后,则自动对数据进行一次重发,知道收到响应。
另外就是要使用UDP方式,没必要使用TCP连接。
加载更多回复(3)
客户端
需求多变,怎么合理
设计
服务端
API版本?
▲点击上方“分布式实验室”关注公众号回复“1”抽取纸质技术书笔者曾负责vivo应用商店服务器开
发
,有幸见证应用商店从百万日活到几千万日活的
发
展历程。应用商店
客户端
经历了大大小小上百个版本...
Java
客户端
开
发
与
服务端
开
发
Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次...
mysql高并
发
写入_高并
发
写入mysql的
设计
客户端
每隔
10秒提交100行数据给
服务端
,
服务端
查重后写入。
客户端
约在几万左右,提交数据比较集中,不考虑读数据的问题。现在的
设计
是:数据库按
客户端
进行分表。每个表的数据量不高。
服务端
获得数据后,先插入redis...
易语言tcp多线程
服务端
客户端
_太详细了,TCP协议面试灵魂10问,建议收藏!
分析如下: 如果是两次,你现在
发
了 SYN 报文想握手,但是这个包滞留在了当前的网络中迟迟没有到达,TCP 以为这是丢了包,于是重传,两次握手建立好了连接。 看似没有问题,但是连接关闭后,如果这个滞留在网路中的...
京东无线
服务端
架构演进历程
京东无线
服务端
首先,在大会上统计一下数据,不知道多少人的手机上安装了京东手机APP,从举手的比例来...这是我们
服务端
的
一个
进化历程,其实它也是随着我们京东无线整个业务在进化。我一直在强调,所谓技术驱动公司
网络编程
18,356
社区成员
64,217
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章