DSAPI多功能组件编程应用-网络相关(中)

来源:互联网 发布:log4j写入数据库详解 编辑:程序博客网 时间:2024/05/30 23:07

[DSAPI.DLL下载地址]


在中篇,我将演示比上篇稍微复杂点的功能.如HTTP监听和局域网广播.

有时,我们会有这样的需求:用户通过浏览器来访问获取数据,我们的程序需要监听指定端口,根据不同的请求返回不同数据给用户,当然,用户可能使用的是浏览器,我们先来看下面的代码:

   Private WithEvents 监听 As New DSAPI.网络相关.HTTP监听    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load        CheckForIllegalCrossThreadCalls = False        With 监听            .绑定端口 = 2000            .编码 = System.Text.Encoding.Default            .参数前导符 = ""            .传输使用Bas64加密 = False            .允许外网连接 = True            .启动监听()        End With    End Sub
使用WithEvents方式,将更方便使用其事件.
释义:
编码:指示返回给客户端时使用哪种字符编码
参数前导符:是否需要使用指定字串开头,比如
.参数前导符="cmd:"
当用户输入http://127.0.0.1:2000/cmd:help,时,程序将获取的"客户端.传入的Url"从前导符后面开始提取,即"help",如果指定了前导符,那么当用户的URL请求不是以前导符请求传入时,将触发服务端的"收到被阻止的客户端请求"事件.
传输使用Base64加密:指示输出到客户端页面的内容是否使用Base64加密,将启用此加密时,读取客户端输入流的也应使用Base64加密.
允许外网连接:指示本监听服务是否允许外网访问,如果为False,则外网所有请求都不进行处理,并触发"收到被阻止的客户端请求"事件.

编写一个监听服务端
   Private Sub 监听_收到客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端) Handles 监听.收到客户端请求        TextBox1.Text &= 客户端.传入的URL & vbCrLf        If 客户端.传入的URL = "help" Then            监听.写入信息到指定客户端输出流(客户端, "This is help")        End If    End Sub



运行以上代码时的效果图,左图为监听服务端,右侧为客户端浏览器.

  


DSAPI.网络相关.HTTP监听支持以下事件:
监听已启动
监听已停止
收到被阻止的客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端)
收到客户端请求(客户端 As DSAPI.网络相关.HTTP监听.监听客户端)
遇到错误(错误 As Exception)

传入的客户端
以上述http监听服务端中,当接收到客户请求时,会形成一个客户端信息,该信息会包含在“收到客户端请求事件里,客户端信息为简单的封装,包含如下内容:
传入的URL
当前会话上下文
端口
会话时间
浏览器信息
请求类型
输出流
输入流


局域网广播
直到写这个,我才看到里面的函数我没有改成中文,不过不影响使用。

发送局域网广播消息
DSAPI.网络相关.局域网广播.局域网广播_服务端.SendMessage(System.Text.Encoding.Default.GetBytes("Hello Everyone"))

发送不需要定义或声明发送者,但是接收广播消息需要有一个对象来实时接收,所以接收广播消息时:

 Private WithEvents 客户端 As New DSAPI.网络相关.局域网广播.局域网广播_客户端       Private Sub 客户端_ReceivedMessage(Msg() As Byte) Handles 客户端.ReceivedMessage        Console.WriteLine(System.Text.Encoding.Default.GetString(Msg))    End Sub

当广播客户端接收到消息时,将触发”ReceivedMessage“事件。


0 0
原创粉丝点击