如何做到控制连接数量,并且可以在服务器压力减轻后按个处理缓冲池
比方控制最大连接数量10
超过的就加入缓充池,一旦连接数量10个中有部分关闭之后,就授受缓充池中的任务
相当于如果同时100个人请求网站,服务器可能会好多连接请求失败,而用了缓充池后
客户端就会显示类似正在请求的状态,并没有断开,只是说图片显示慢一点了
比方控制最大连接数量10
超过的就加入缓充池,一旦连接数量10个中有部分关闭之后,就授受缓充池中的任务
相当于如果同时100个人请求网站,服务器可能会好多连接请求失败,而用了缓充池后
客户端就会显示类似正在请求的状态,并没有断开,只是说图片显示慢一点了
解决方案 »
- 请问在COM组件中能不能使用winsock开发网络通信程序?
- 打包后,数据库的位置不就变了吗?那怎么让adodc连接数据库?
- 紧急求救,我用vb编的internet打包的activex控件 不能被ie浏览器下载,等于没法使,怎么办
- 用水晶报表预览msflexgrid中的所有记录!?
- 谁有 apex true dblist pro 7.0 的注册码 能用的立即给分,不够还可再加
- 如何使用datacombo??急急急急急急
- ***先来先得,发言就给分,有关VB+SQL Server 2000中实现触发器的弱者问题!***
- ole控件不能放在控件设计器中??完了 谁来救救我:。。(
- 关于考程!!!
- 报表打印时,始终要先show,能否不show直接打印?
- C#中如何让2个show出来From不管分辨率的变化一直并列显示
- 如何读取一个图片,文档,mp3文件的内容,将其存成sql数据库中的OLE类型对象,然后再将其从sql中读出来恢复成文件,将他们显示出来!解决
GZIP这些不用理会
其实就是三个控件
server,中间,接收外网数据
客户端(如IE)连接server,然后分配给 中间的winsock(数组控件)
accept request再中间控件收到数据时,用“接收外网数据”控件连接到相应的主机,收到数据时,发回给中间件
中间在通道关闭时做相应的处理,已经有相应的程序,但是经常会造成好几个连接端一直没关闭,有时网页显示不完整,像是淘宝商品页的描述经常出不来
有经验的可以留下Q号,有过相关经验的人可以付费请帮帮我完善
而且,http代理我就用VB实现过,从控件到自己用API异步的方式都试验过。最终的效果是会丢失很多
连接,比如单纯测试一两个或是多个连接是正常的,但是直接把IE的代理设置为自己的程序,访问
内容不多的本地iis服务网页没什么问题,但是如果网页中有很多图片和外部js或css,就经常丢失
元素,因为VB的速度和效率跟不上,所以不会过得了抗压测试。
而且,作为服务程序,在架构上也是很讲究的,即使是用VC来写,在架构上如果弄不好,同样会效率
跟不上,为了能更好更快的的实现服务,不单是讲究架构,还得讲究具体技术和过程,稍微不注意,
弄出来的东西就会有很多缺陷。
目前在 windows 中比较成熟的方案是用 IOCP,但 VB 要用这种架构架构并能做到稳定,可以说比用
VC 来写难度更大,时间更久,技术要求更高,甚至要对整个VB、COM、WIN32体系有很具体的认识和经
验才能这样实施,但最后即使弄出来,效率还是比VC的低,稳定性也是一直是个问号。
中间socket
连外部socket
嗯,我刚试过了,用的是3个控件,找到了点问题中间socket和连外部socket连上时,如果连外部socket close了,但是中间SOCKET是负责发数据给请求方的,必须等发送完成才能CLOSE,否则就会造成数据发送不完整
sendcomplet这个事件很重要,但是还没弄好缓充池
分发请求给多个中间件:中间socket中间socket转发get之类的HTTP头到“连外部socket”
建立连接到请求所对应的网站及端口,发送GET或POST等请求连外部socket收到真实的网页数据,然后用“中间socket”转发二进制图片等数据给客户端IE
缓冲池我有简单的例子,如果有需要可以交流下。
绿豆真厉害啊,有没有vb写的抓数据包的代码?用VB写抓包,一种方法是直接做个代理服务器,就像我这样的,然后把收到的数据进行分析,GET是请求,返回的内容也要保存,由一个REQUESTID作为标识,这个我的代理工具就能办到,只要IE的代理设成我的程序端口就行了另一种方法就是直接用网卡封包抓取的模式,那样的话乱七八糟的流量全要分析,不只是HTTP信息,还有聊天等信息,加密的一大片,哪个是哪个软件上调用过来的也不知道。
怎么样实现代理登陆时的验证呢?这个我试过用HTTP协议登陆路由器,这个登陆时就有一个账号和密码框要加密到HTTP HEADER才能登陆
前面我是每次收到数据包都去转换成TXT查找是否有**字符串,比方是HOST,以此认为是HTTP请求,比方一个POST有二进制数据,用了30次分包才传完,这样就要解析30次,很费时间,后来我加了个变量来识别,比方第一次时找到了HTTP HEADER头,后面看这变量值,接收到数据就只管转发不再解析,一旦这个GET请求发送到外网,并且返回了有效的HTM数据,这时就又把变量清0,在这个控件没有关闭前,还会收到GET请求,这时就又分析HTTP头,要是发现了完整的HTTP头,就关闭SOCKET,重新建立连接。有一个问题,收到GET请求时,SOCKE3还没有连接成功到目标网站,这时可能IE请求收到多次数据包(比方是POST),这时数据就需要先存到缓存变量里,并且要一段一段的混在一起。
比方原来的内容是大小写混合的,但是想只用小写去查,如何处理?
用INSTRB比较慢吧,有什么更好的函数或API?如果对一个数组,去除中间一段内容,或者是替换中间一段内容,有什么好方法?
dim bt() as byte
redim bt(3000)
想把BT(500-2000)的数据替换成别的,或者删除,要如何写代码呢?
我的思路是这样的。
外网服务器上运行 S 监听两个端口“1800”和“123” “1800”是给C连接 “123”给外网服务器IE连接
内网运行C 由C主动连接外网S的端口”1800“建立连接 ,当然C也会有监听端口 ”80“当需要工作的时候 内网C 连接外网S”1800”端口,连同通后. IE访问外网 “123“端口,就可以看到内网C”80“的端口。
数据传输已经可以了,就是不能传输图片等文件,只能传输文本。