博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DSAPI多功能组件编程应用-HTTP监听服务端与客户端
阅读量:4652 次
发布时间:2019-06-09

本文共 2774 字,大约阅读时间需要 9 分钟。

本文中,演示了使用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,但注意,浏览器无法手动输入提交内容,所以上述服务端中可判断请求内容是否为空。该方法可以实现返回一个网页数据,以直接在客户端浏览器中显示。

转载于:https://www.cnblogs.com/dylike/p/10575983.html

你可能感兴趣的文章
vue element 关闭当前tab 跳转到上一路由
查看>>
4、面向对象
查看>>
[NOI2005]聪聪与可可(期望dp)
查看>>
POJ 3723
查看>>
Elgg网站迁移指南
查看>>
Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
查看>>
基于uFUN开发板的心率计(一)DMA方式获取传感器数据
查看>>
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
nodejs pm2使用
查看>>
CSS选择器总结
查看>>
mysql中sql语句
查看>>
sql语句的各种模糊查询语句
查看>>
Python20-Day05
查看>>
C#操作OFFICE一(EXCEL)
查看>>
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>