DSAPI多功能组件编程应用-HTTP监听服务端与客户端
本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端。
HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用在网页方面。
DSAPI.网络相关.HTTP监听支持事件,在声明时,可使用WithEvents来使用其事件支持。
建立一个HTTP监听服务端
' 声明一个服务端
Private WithEvents 服务端 As New DSAPI.网络相关.HTTP监听
With 服务端
.绑定端口 = 2000 '要监听的端口
.参数前导符 = "DSAPI" '当使用参数前导符时,要追加的字串
.允许外网连接 = True '是否允许外网连接,如果为False,来自外网的http请求一律被拦截和丢弃
.使用参数前导符 = True '是否使用参数前导符
.启动监听() '开始监听
End With
绑定端口,这个不必多说,大家都知道。
参数前导符,是用来防止恶意请求,该前导符是追加在域名之后的,如客户端请求的域名是http://127.0.0.1:2000/DSAPI,则视为合法请求,否则服务端将拦截并丢弃。如果不使用参数前导符,则http://127.0.0.1:2000/ 被视为合法请求,并且无论后面追加的是什么内容,均接受,但不处理。
允许外网连接,开启此项后,只接收同网段IP客户端的http请求,其余请求被拦截或丢弃。
支持的事件
Private Sub 服务端_监听已启动() Handles 服务端.监听已启动
End Sub
Private Sub 服务端_监听已停止() Handles 服务端.监听已停止
End Sub
Private Sub 服务端_收到被阻止的客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端) Handles 服务端.收到被阻止的客户端请求
End Sub
Private Sub 服务端_收到客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端) Handles 服务端.收到客户端请求
End Sub
Private Sub 服务端_遇到错误(错误 As Exception) Handles 服务端.遇到错误
End Sub
监听已启动:当服务端启动监听并且监听成功时触发。
监听已停止:当服务端停止监听并且监听停止时触发。
收到被阻止的客户端请求:当一些不合法的http请求,如关闭允许外网连接情况下收到外网的请求,或开启前导符验证时收到没有正确前导符URL的请求时触发。
服务端_收到客户端请求:客户端http请求合法,并发来数据时触发。
服务端_遇到错误:服务端在启动监听、运行、停止监听过程中遇到一些意外时触发。
在收到客户端请求事件中,参数为封装了客户端请求信息的一个类,该类里包含所有与该客户端有关的信息。
以下演示当收到合法的客户端http请求时进行响应。
Private Sub 服务端_收到客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端) Handles 服务端.收到客户端请求
Dim Rd As New IO.StreamReader(客户端.输入流)
Dim S As String = Rd.ReadToEnd
Select Case S
Case "hello"
服务端.写入信息到指定客户端输出流(客户端, "Hello,my friend")
Case "get"
服务端.写入信息到指定客户端输出流(客户端, IO.File.ReadAllBytes("c:\1.rar"))
Case Else
服务端.写入信息到指定客户端输出流(客户端, "No command here")
End Select
End Sub
上述代码中,"hello","get"都是从客户端的输入流输入的,这些内容均不会直接在url中显示出现,确保安全性。
以下演示建立一个Http请求客户端
Private Function 发送数据(网址 As String, 端口 As String, 前导参数 As String, 发送内容 As String) As String
'---------建立请求并发送内容
Dim R As Net.HttpWebRequest = Net.HttpWebRequest.Create(网址 & ":" & 端口 & "/" & 前导参数)
Dim Bts() As Byte = System.Text.Encoding.Default.GetBytes(发送内容) '内容编码成数组
R.Method = "POST" 'POST方式,可忽略
R.ContentLength = Bts.Length '发送内容长度
R.ContentType = "text/xml" '发送内容为文本
R.GetRequestStream.Write(Bts, 0, Bts.Length) '向输入流输出内容
'----------获取返回内容
Dim Rd As New IO.StreamReader(R.GetResponse.GetResponseStream)
Dim S As String = Rd.ReadToEnd '读取流内容
Rd.Close()
Return S
End Function
调用获取服务返回数据
方式1:
MsgBox(发送数据("http://127.0.0.1", 2000, "DSAPI", "hello"))
方式2:
直接使用浏览器访问http://127.0.0.1:2000 /DSAPI,但注意,浏览器无法手动输入提交内容,所以上述服务端中可判断请求内容是否为空。该方法可以实现返回一个网页数据,以直接在客户端浏览器中显示。
DSAPI多功能组件编程应用-HTTP监听服务端与客户端的更多相关文章
- DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版
前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...
- DSAPI HTTP监听服务端与客户端_指令版
前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...
- DSAPI HTTP监听服务端与客户端
本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...
- DSAPI多功能组件编程应用-参考-Win32API常数
DSAPI多功能组件编程应用-参考-Win32API常数 在编程过程中,常常需要使用Win32API来实现一些特定功能,而Win32API又往往需要使用一些API常数,百度搜索常数值,查手册,也就成了 ...
- DSAPI多功能组件编程应用-网络相关(上)
[DSAPI.DLL下载地址] DSAPI多功能组件编程应用-网络相关,网络相关编程有很多很多,这里讲解一下封装在DSAPI中的网络相关的功能,这些都是本人简化到极点的功能了,可以在软件开发过程中节 ...
- DSAPI多功能组件编程应用-网络相关(中)
[DSAPI.DLL下载地址] 在中篇,我将演示比上篇稍微复杂点的功能.如HTTP监听和局域网广播. 有时,我们会有这样的需求:用户通过浏览器来访问获取数据,我们的程序需要监听指定端口,根据不同的请求 ...
- DSAPI多功能组件编程应用-网络相关(下)
[DSAPI.DLL下载地址] 在本篇,我将重点介绍DSAPI.DLL中Socket编程的使用.众所周知,Socket用起来不难,但是写起来麻烦.我对Socket进行了封装,进行了高度简化.下面我将通 ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署
目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整 例如: 静态文 ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(nginx配置篇章)
laravel项目中的配置 原文出处:https://laravelacademy.org/post/19700.html,感谢原文作者让laravel这款可爱的php框架,进入了高并发的殿堂 如果 ...
随机推荐
- Android进程间通信IPC
一.IPC的说明 IPC是Inter-Process Communication的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程. IPC不是Android独有的,任何一个操作 ...
- 常用的js效果
使用jquery实现鼠标悬停显示层 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- unittest测试用例的执行顺序
unittest的测试顺序为:有几个测试用例,测试固件就会执行多少次. 例如:只有一个测试用例时: setup--testcase1--teardown import unittest class F ...
- window server 2008 安装Oracle10g
oracle安装都大同小异. 开始安装步骤 输入完之后点击下一步 这时候稍等一会儿. 这时候也要稍等一会儿. 直接安装. 设置口令管理,设置SCOTT的密码为tiger就好了. 这时候稍等一会儿. o ...
- [转]Understanding OpenStack Authentication: Keystone PKI
The latest stable release of OpenStack, codenamed Grizzly, revolutionizes the way user authenticatio ...
- 小程序组件化框架 WePY 在性能调优上做出的探究
作者:龚澄 导语 性能调优是一个亘古不变的话题,无论是在传统H5上还是小程序中.因为实现机制不同,可能导致传统H5中的某些优化方式在小程序上并不适用.因此必须另开辟蹊径找出适合小程序的调估方式. 本文 ...
- 实现CSS隐藏滚动条并可以滚动内容
隐藏滚动条的同时还需要支持滚动,我们经常在前端开发中遇到这种情况,最容易想到的是加一个iscroll插件,但其实现在CSS也可以实现这个功能,我已经在很多地方使用了,下面一起看看这三种方法. 方法1: ...
- WinRAR存在严重的安全漏洞影响5亿用户
WinRAR可能是目前全球用户最多的解压缩软件,近日安全团队发现并公布了WinRAR中存在长达19年的严重安全漏洞,这意味着有可能超过5亿用户面临安全风险. 该漏洞存在于所有WinRAR版本中包含的U ...
- 大量示例彻底搞懂Linux查找,which,whereis,locate,find
前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. which which命令会在P ...
- #Java学习之路——基础阶段(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...