多客户端和服务器通讯的问题
现在我想要做一个类似于机房管理系统一样的东西,现在需要办到下面的事情:
1.服务器要能快速的发送命令到客户端
2.服务器和客户端都有数据库保存数据,有一些数据库信息需要从服务器传送到客户端或者客户端把数据上传到服务器端,使得客户端保持和服务器上一份相同的数据,也就是他也和服务器数据同步。
3.客户端的数量可能很大,有几百几千个
4.两者间的数据包还是很频繁的,服务器端是否一定需要多线程的程序才能做稳定?我现在还是单线程的,因为VB只支持单线程,还是单线程的也没有关系,也可以搞的很稳定?
为了办到上面两个情况,我现在是在客户端即和服务器连接winsock,再连接数据库。我也不知道是否有人碰到这种需求的时候,会和我一样这样处理,我总是觉得有点怪怪的感觉,觉得我的方法会有问题?是否只要一个winsock的连接就能办到我要的功能了(不过有可能还是要传文件的)?我现在的结合winsock和数据库一起连接的架构是否有问题?
请各位有多客户端开发的前辈多多指点,谢谢!
[解决办法]
单线程肯定不行,用完成端口或者线程池实现吧
[解决办法]
up
[解决办法]
那是不是这样的服务器端一般不用VB开发(因为不支持稳定的多线程),是否用vb.net(这个应该支持稳定的多线程吧)就可以处理掉这个问题?
===========================================
恩,我认为是这样
[解决办法]
建议用VB。NET开发服务器端啊
[解决办法]
VB+Winsock完全可以实现,注意,Winsock必须使用API.
[解决办法]
4.两者间的数据包还是很频繁的
另外如果处理数据上耗时的话 以后数据量大了软件可能会不响应 要用户觉得死机了
建议直接用vb.net 或者等以后用了 觉得软件慢了再改用多线程做
[解决办法]
我的经验:
1、Server使用VB.Net多线程开发。
如果可能,使用I/O Complete Port(完成端口)模式开发,可以应付成百上千的客户端连接。
抱歉,我只是知道完成端口的妙,但是自己没有做过,也许你可以搜到一些参考资料。
2、如果内网传输,建议使用TCP
没有什么强烈的理由,只是用起来比较顺手,便于检测掉线。
因为TCP是基于流的,你可能需要对消息边界做处理。
[解决办法]
楼上几位的想法,我个人觉得实现的可能性太小,即使实现了,系统也会经常崩溃
因为你们忽视了楼主对于客户端数量级的大小.
1.对于这样超过几百的客户端,并且楼主自己强调是频繁的数据交换,甚至还有DB间的交换,有用会用windows的操作系统去实现server功能嘛?~~~~~~太可笑了吧
2.不知道楼主项目的预算是多少? 钱少的话,建议放弃吧.传统的C/S架构已经无法实现你的7*24需求了.
个人建议:
1.server 换成了unix操作系统吧,找个每月1~2W的人,帮你用C写个server端.
2.超过几百的Client,必然要实现负载均衡,有钱的去买RADWARE,BEA.没钱的话,找个7,8K的人用C或者JAVA写个中间件
3.这种项目不要考虑用windows OS来实现server,太不专业了
说真的,微软的一些IDE,除了C++都属于小打小闹,适合学校教学使用和帮小公司玩玩用.
如果在下出言不慎,请口下留情.
[解决办法]
支持使用VB.NET