本文中,演示了使用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监听服务端与客户端的更多相关文章

  1. DSAPI HTTP监听服务端与客户端_指令版

    前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...

  2. DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版

    前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...

  3. DSAPI多功能组件编程应用-HTTP监听服务端与客户端

    本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...

  4. select监听服务端

    # can_read, can_write, _ = select.select(inputs, outputs, None, None)## 第一个参数是我们需要监听可读的套接字, 第二个参数是我们 ...

  5. C#Winform窗体实现服务端和客户端通信例子(TCP/IP)

    Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...

  6. python thrift 服务端与客户端使用

    一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  7. linux(centos 6.4)下安装php memcache服务端及其客户端(详细教程)

    前言 在搭建个人博客时,由于没有使用任何框架,纯手工code前台和后台,导致遇到许多问题,其中一个问题就是mysql连接导致的页面相应速度异常低.在查询各种途径后,只能考虑使用memcache缓存.在 ...

  8. [C语言]一个很实用的服务端和客户端进行TCP通信的实例

    本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...

  9. Java TCP服务端向客户端发送图片

    /** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...

随机推荐

  1. STS(Spring Tool Suite)下SSM(Spring+SpringMVC+Mybatis)框架搭建(一)

    最近在用SSM框架做一个网站,就顺便把自己要做的笔记需要了解的东西都写了下来,看看对大家学习SSM框架有没有帮助. 开发环境: 1.win10 64位 2.spring-tool-suite-3.9. ...

  2. 无需sendmail:巧用LD_PRELOAD突破disable_functions

    *本文原创作者:yangyangwithgnu,本文属FreeBuf原创奖励计划,未经许可禁止转载 摘要:千辛万苦拿到的 webshell 居然无法执行系统命令,怀疑服务端 disable_funct ...

  3. layui table分页 page为false时,limit问题

    问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...

  4. windows 10 64位机器上 安装部署

    mi这个博客写的不错 https://www.cnblogs.com/dingguofeng/p/8709476.html 安装redis 可视化工具后 ,新建连接 名称随意,注意端口号是否有误默认6 ...

  5. 一种简单的 rem 单位基准设置

    1rem 换算成的像素值等于 html 元素的 font-size 值 如果 设置 html 的 font-size 为 100px, 那么设计稿的 像素转换成 rem 只需要除以 100 即可. f ...

  6. Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式

    在<以约定的方式定义拦截器>中,我们通过对拦截器的介绍了Dora.Interception的两种拦截机制,即针对接口的“实例拦截”针对虚方法的“类型拦截”.我们介绍了拦截器的本质以及基于约 ...

  7. #Java学习之路——基础阶段(第九篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. HTTP 400 错误 - 请求无效 (Bad request)

    在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里: 原因:1)前端提交数据的字段名称或者是字段类型和 ...

  9. 【SQL进阶】03.执行计划之旅1 - 初探

    听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. S ...

  10. 网络协议 8 - TCP协议(上):性恶就要套路深

    系列文章: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网络协议 ...