有谁用VB写过http代理服务器,WEB服务器(类似IIS)

专注编程优化20年 2013-07-24 07:20:02
如何做到控制连接数量,并且可以在服务器压力减轻后按个处理缓冲池
比方控制最大连接数量10
超过的就加入缓充池,一旦连接数量10个中有部分关闭之后,就授受缓充池中的任务
相当于如果同时100个人请求网站,服务器可能会好多连接请求失败,而用了缓充池后
客户端就会显示类似正在请求的状态,并没有断开,只是说图片显示慢一点了
...全文
670 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
数据传输已经可以了,就是不能传输图片等文件,只能传输文本。我也是花了一周才弄好的,支持图片,HTM,支持上传文件等,我QQ1085992075
xibeimu 2013-08-15
  • 打赏
  • 举报
回复
我这两天也在玩这个东西。 我的思路是这样的。 外网服务器上运行 S 监听两个端口“1800”和“123” “1800”是给C连接 “123”给外网服务器IE连接 内网运行C 由C主动连接外网S的端口”1800“建立连接 ,当然C也会有监听端口 ”80“ 当需要工作的时候 内网C 连接外网S”1800”端口,连同通后. IE访问外网 “123“端口,就可以看到内网C”80“的端口。 数据传输已经可以了,就是不能传输图片等文件,只能传输文本。
  • 打赏
  • 举报
回复
[quote=引用 21 楼 SupermanKing 的回复:]好的,谢了,现在就是用这方法了,第一次是检查文个头VBCRLF+VBCRLF,然后后面就只要转发就行了,大不了加个数据缓存到变量的方法,这个用什么编程模式简单呢? 我现在是用DIM A AS Collection DIM B AS 数据类型(一个*.cls)文件存结构数据 然后a.add b,就是用这方法,总觉的这样比较慢吧?
  • 打赏
  • 举报
回复
VB对二进制数组,如何查找比较方便? 比方原来的内容是大小写混合的,但是想只用小写去查,如何处理? 用INSTRB比较慢吧,有什么更好的函数或API? 如果对一个数组,去除中间一段内容,或者是替换中间一段内容,有什么好方法? dim bt() as byte redim bt(3000) 想把BT(500-2000)的数据替换成别的,或者删除,要如何写代码呢?
  • 打赏
  • 举报
回复
有谁对GZIP编码熟悉的呢??
现在还是人类 2013-07-27
  • 打赏
  • 举报
回复
引用 18 楼 xiaoyao961 的回复:
并不会浪费时间,只是说VB6是太早的东西,很多功能还没有,如果是VB。NET 2008 2012之类,或许本身就内置了自动生成GIF图片,PNG,也可能几句话就能出来一个代理服务器,像是GZIP等解码,系统本身都自带了,可能一个函数就搞定,而且VB6,很多功能都要写一个到几个模块文件才能实现。 怎么样实现代理登陆时的验证呢?这个我试过用HTTP协议登陆路由器,这个登陆时就有一个账号和密码框要加密到HTTP HEADER才能登陆
按你的理论,哪还用自己去写代码,直接用现成的软件就可以了,最多用一下子类化处理一下UI或帮他封个壳,这样做最省事。再说了,也没那么多现成的模块给你用,不要想得太美好了。 至于你的问题,登录密码部分很简单,一看就知道是MIME编码,你自己抓个包解个码看看就知道他的格式了。只要按照用户名:密码的格式编码就解决了。至于处理连接交换那块,更加简单,就是些基本的逻辑问题,不管一次通讯会产生多少次事件,你只要明确 HTTP 头是以换行符号与冒号分割数据就可以很容易识别呀,只以“行”为单位处理 HTTP 头,以两个换行符号为基础识别 HTTP 头段落,其余的全是POST数据,这种简单的字符串与参数的识别过程,在VB里实现可以说再简单不过了,如果你觉得这种逻辑处理过程复杂,建议你去参考一下单片机上处理复杂的字符串命令是如何做的。单片机里通常只有128个字节的变量空间,最多再来个1K的扩展RAM,但如果说让单片机来分析HTTP头信息,可以说就那128个字节的变量空间都搓搓有余,这是为什么呢?应为处理过程的逻辑理念问题。先不说你可以在Windows用单片机的方式来做这种逻辑处理,就VB而言网上也很多这类分析处理过程,你可以去参考的呀。
AddDark 2013-07-26
  • 打赏
  • 举报
回复
只为抓包的话,HOOK NtDeviceIoControlFile
  • 打赏
  • 举报
回复
引用 8 楼 SupermanKing 的回复:
看来我说的直接被无视了,唉
前面我是每次收到数据包都去转换成TXT查找是否有**字符串,比方是HOST,以此认为是HTTP请求,比方一个POST有二进制数据,用了30次分包才传完,这样就要解析30次,很费时间,后来我加了个变量来识别,比方第一次时找到了HTTP HEADER头,后面看这变量值,接收到数据就只管转发不再解析,一旦这个GET请求发送到外网,并且返回了有效的HTM数据,这时就又把变量清0,在这个控件没有关闭前,还会收到GET请求,这时就又分析HTTP头,要是发现了完整的HTTP头,就关闭SOCKET,重新建立连接。 有一个问题,收到GET请求时,SOCKE3还没有连接成功到目标网站,这时可能IE请求收到多次数据包(比方是POST),这时数据就需要先存到缓存变量里,并且要一段一段的混在一起。
  • 打赏
  • 举报
回复
引用 14 楼 SupermanKing 的回复:
[quote=引用 10 楼 xiaoyao961 的回复:] 有没有用VB写个WEB服务器的呢
我写过呀,呵呵,还支持PHP和CGI接口呢。最后感觉简直就是个垃圾,没有任何实用价值,只能作为技术研究过程之一而已,而且最终感觉这样做根本只是绕了次远路而已。当你去了解NT服务、IOCP、ISAPI、GZIP这种WEB有关的技术之后,你就会发现,VB要完成这些技术的整合会很无力,而且这个过程很浪费时间。[/quote] 并不会浪费时间,只是说VB6是太早的东西,很多功能还没有,如果是VB。NET 2008 2012之类,或许本身就内置了自动生成GIF图片,PNG,也可能几句话就能出来一个代理服务器,像是GZIP等解码,系统本身都自带了,可能一个函数就搞定,而且VB6,很多功能都要写一个到几个模块文件才能实现。 怎么样实现代理登陆时的验证呢?这个我试过用HTTP协议登陆路由器,这个登陆时就有一个账号和密码框要加密到HTTP HEADER才能登陆
  • 打赏
  • 举报
回复
引用 16 楼 wowfiowow 的回复:
[quote=引用 15 楼 SupermanKing 的回复:] 当然,FTP、SMTP、POP3、WHIOS、P2P等等我都有用VB去实现过,甚至是客户端都有在弄,包括浏览器的自己解码。最后总结的是,客户端VB可以勉强用一下,但服务器端用VB去弄就是浪费时间。
绿豆真厉害啊,有没有vb写的抓数据包的代码?[/quote] 用VB写抓包,一种方法是直接做个代理服务器,就像我这样的,然后把收到的数据进行分析,GET是请求,返回的内容也要保存,由一个REQUESTID作为标识,这个我的代理工具就能办到,只要IE的代理设成我的程序端口就行了 另一种方法就是直接用网卡封包抓取的模式,那样的话乱七八糟的流量全要分析,不只是HTTP信息,还有聊天等信息,加密的一大片,哪个是哪个软件上调用过来的也不知道。
橘子皮... 2013-07-25
  • 打赏
  • 举报
回复
引用 15 楼 SupermanKing 的回复:
当然,FTP、SMTP、POP3、WHIOS、P2P等等我都有用VB去实现过,甚至是客户端都有在弄,包括浏览器的自己解码。最后总结的是,客户端VB可以勉强用一下,但服务器端用VB去弄就是浪费时间。
绿豆真厉害啊,有没有vb写的抓数据包的代码?
  • 打赏
  • 举报
回复
有没有用VB写个WEB服务器的呢
  • 打赏
  • 举报
回复
引用 8 楼 SupermanKing 的回复:
看来我说的直接被无视了,唉
不是用来做大应用的,只是一个中转用途,不需要并发,只是说用IE去试 现实上用途呢,其实就是单个连接就够了
现在还是人类 2013-07-25
  • 打赏
  • 举报
回复
当然,FTP、SMTP、POP3、WHIOS、P2P等等我都有用VB去实现过,甚至是客户端都有在弄,包括浏览器的自己解码。最后总结的是,客户端VB可以勉强用一下,但服务器端用VB去弄就是浪费时间。
现在还是人类 2013-07-25
  • 打赏
  • 举报
回复
引用 10 楼 xiaoyao961 的回复:
有没有用VB写个WEB服务器的呢
我写过呀,呵呵,还支持PHP和CGI接口呢。最后感觉简直就是个垃圾,没有任何实用价值,只能作为技术研究过程之一而已,而且最终感觉这样做根本只是绕了次远路而已。当你去了解NT服务、IOCP、ISAPI、GZIP这种WEB有关的技术之后,你就会发现,VB要完成这些技术的整合会很无力,而且这个过程很浪费时间。
现在还是人类 2013-07-25
  • 打赏
  • 举报
回复
看来我说的直接被无视了,唉
苍狼传说 2013-07-25
  • 打赏
  • 举报
回复
很久没有上CSDN了,呵呵
苍狼传说 2013-07-25
  • 打赏
  • 举报
回复
缓冲池这块相对来说比较简单些。当然做得完美还是需要花一些功夫。我觉得从请求然后答复这块,VB效率应该没有问题吧?因为确实不需要处理很多数据。只是一些Session这些的处理比较头痛一些,比如用户验证码可能永远不会正确。 缓冲池我有简单的例子,如果有需要可以交流下。
笨狗先飞 2013-07-25
  • 打赏
  • 举报
回复
静态web用Delphi写几行代码就可以搞个出来了。
现在还是人类 2013-07-24
  • 打赏
  • 举报
回复
不用考虑用VB做这种事情了,不现实,这种东西从架构和效率上VB很难做到令人勉强接收的效果。 而且,http代理我就用VB实现过,从控件到自己用API异步的方式都试验过。最终的效果是会丢失很多 连接,比如单纯测试一两个或是多个连接是正常的,但是直接把IE的代理设置为自己的程序,访问 内容不多的本地iis服务网页没什么问题,但是如果网页中有很多图片和外部js或css,就经常丢失 元素,因为VB的速度和效率跟不上,所以不会过得了抗压测试。 而且,作为服务程序,在架构上也是很讲究的,即使是用VC来写,在架构上如果弄不好,同样会效率 跟不上,为了能更好更快的的实现服务,不单是讲究架构,还得讲究具体技术和过程,稍微不注意, 弄出来的东西就会有很多缺陷。 目前在 windows 中比较成熟的方案是用 IOCP,但 VB 要用这种架构架构并能做到稳定,可以说比用 VC 来写难度更大,时间更久,技术要求更高,甚至要对整个VB、COM、WIN32体系有很具体的认识和经 验才能这样实施,但最后即使弄出来,效率还是比VC的低,稳定性也是一直是个问号。
加载更多回复(6)

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧