解决方案 »
- 如何用代码读取客户端软件查询出的数据
- C#套接字与SmtpClient目标机器积极拒绝,无法连接。 127.0.0.1:2112
- 关于 webReqeust、HttpWebRequest
- 如何实现以下问题
- 在[Repeater]绑定数据控件中加载[Button]总是出错(回发或回调参数无效)
- 如何判断一个字符是否可以出现在变量名中
- 请问在VS2005中一个关于DataGridView的问题。
- 我现在想右键DATAGIRDVIEW出现个新增点下就出来1行(急在线等)
- 字符串比较的问题?
- 请问一个关于从应用程序中请求一个http登陆连接资源的问题,请高手帮忙
- 我要想WORD中第二个表格添加数据 如何检索到第二个表格 即将焦点获取到第2个表格中
- 将五个从INI文件中传进来的值赋给label1~label5.(用FOR循环)
win2000 mysql 但是这个是为每一个终端开一个端口,不知道什么原理,为什么这么做?
难道这就是传说中的完成端口??????那个是原来的人员做的,都走了,什么都没有,没有源码,只有使用说明。
应该采用连接发送响应关闭。
如果所有连接都不关,毕竟不是一个好想法。
考虑到伸缩性IOCP也就是完成端口。不过c#做完成端口,好像没有现成可调用的
web程序可用台服务器,数据库用N台服务器,表分区放在不同服务器上
貌似2.0新加的SocketAsyncEventArgs封装了IOCP,但例子非常少。
一台或若干名通讯服务器用来接收所有或分派到客户的数据
一台或若干名数据服务器放数据库,全部数据或帐套
一台登记服务器用来存放登录和配置信息总之软件结构上肯定要预先设计好分区,每个客户ID都隶属某个通讯服务器ID和数据库服务器ID,一开始所有客户可以都一样,
通过不同ID配置不同的IP和数据库连接字符串,强行把客户都分到自己的通讯服务器和数据库服务器上去,客户再多也不怕,无非登记服务器的数据库的表里加一条客户ID,登记服务器的数据库表里还放了个整型字段记载了每个通讯服务器ID和数据库服务器ID
的负载情况,找到负载最轻的,值最小的,然后+1,然后子表里存好客户ID分别和通讯服务器ID和数据库服务器ID的对应关系,
值可以有最大值,如果遍历下来都是最大值了,就再加通讯或数据库服务器,以及相应的登记信息
Windows下要提高并发数、吞吐量只有用完成端口了,最近我刚好也做了个完成端口的项目,不过是用VC++做的。强烈建议把连接方式由长连接改为短连接。
就算发心跳包也改成:连接服务器-〉发心跳包-〉断开
按5分钟发一个包的频率算,服务器承受几十万个客户端都没问题。
我想,同时连接1000个客户端应该没问题。
一个连接socket断开后,其他连接收不到数据,但是连接还在。
可能的原因:调用某些重要的函数时,传递参数是引用,可能值被更改,最后把可能的参数进行深拷贝,问题解决。哈哈,上一个贴子应该今天结贴就好了,哈哈,和这个一起结了。
02年的传奇私服,PD 3.0GHz 512MB DDR1,带2000个人没问题。
传奇这类游戏可是TCP长链接。
现在数据库还没有频繁读写,不知道以后瓶颈会在哪?????
lz这种软件不可以选择UDP,况且互联网是一个速度、可靠性都很低的网络,UDP永远代替不了TCP的可靠性。
频繁读写会调用外存,外存读写严重时会占用CPU。
如果有条件的话,读写可以分布在两台服务器上;如果写频繁,读不频繁的话,可以不考虑。