[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“事件。



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

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

    [DSAPI.DLL下载地址]  DSAPI多功能组件编程应用-网络相关,网络相关编程有很多很多,这里讲解一下封装在DSAPI中的网络相关的功能,这些都是本人简化到极点的功能了,可以在软件开发过程中节 ...

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

    [DSAPI.DLL下载地址] 在本篇,我将重点介绍DSAPI.DLL中Socket编程的使用.众所周知,Socket用起来不难,但是写起来麻烦.我对Socket进行了封装,进行了高度简化.下面我将通 ...

  3. DSAPI多功能组件编程应用-反射相关

    [DSAPI.DLL下载地址]       在.Net中,反射技术是一种入门困难,熟用快速的东西,对于没有接触过反射技术的程序员来说的确是头疼的,看一旦自己写过了,上手就非常简单了.在本节,将部分.N ...

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

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

  5. DSAPI多功能组件编程应用-参考-Win32API常数

    DSAPI多功能组件编程应用-参考-Win32API常数 在编程过程中,常常需要使用Win32API来实现一些特定功能,而Win32API又往往需要使用一些API常数,百度搜索常数值,查手册,也就成了 ...

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

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

  7. DSAPI多功能组件编程应用-文件类

    [DSAPI.DLL下载地址]     本节内容,是属于"无需过多说明"就能使用的功能.由于实在是太简单,我就简单地示例一下. DSAPI.文件类.获取可读性强的字节大小信息(&q ...

  8. DSAPI多功能组件编程应用-DS提示气泡

    首先下载DSAPI.dll.并在项目中引用. 该功能包括在DSAPI1.0.1.1及更高版本号,DLL请到本人资源里查找. Private Sub Button1_Click(sender As Ob ...

  9. DSAPI多功能组件编程应用-使用外部字体(包括资源文件)

    在软件开发过程中,尤其是比较个性化的程序,有时会需要使用非安装字体文件,比如发布的时候附带了一个专用字体,或者该字体文件直接被放入项目资源,当不希望把这个字体安装到用户的操作系统但又想使用它时,本示例 ...

随机推荐

  1. python 错误记录

    class Func: d = dict() def __setitem__(self, key, value): # xxx object does not support item assignm ...

  2. js将一个具有相同键值对的一维数组转换成二维数组

    这两天,一个前端朋友在面试的笔试过程中遇到了一道类似于"用js实现将一个具有相同code值的一维数组转换成相同code值在一起的二维数组"的题目.他面试过后,把这个问题抛给了我,问 ...

  3. docker images

    docker images 介绍 镜像是动态的容器的静态表示,包括容器所要运行的应用代码以及运行时的配置.Docker镜像包括一个或者多个只读层(read-only layers),因此,镜像一旦被创 ...

  4. 反编译python打包的exe文件

    目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...

  5. mongodb建立索引

    创建索引 索引:以提升查询速度 语法:db.集合.ensureIndex({属性:1}),1表示升序,-1表示降序 具体操作:db.t255.ensureIndex({name:1}) db.t1.f ...

  6. 使用 TRESTClient 與 TRESTRequest 作為 HTTP Client 之二 (POST 檔案)

    使用 HTML 进行文件上传,已经是很平常的应用了,在手机App里面,也常常会用到这个作业,例如拍照上传,或是从相簿选取照片上传,都是很常见的. 在 HTML 的 Form 里面,要让使用者选择文件上 ...

  7. leetcode-数组中只出现一次的数字

    一.版本1—有序数组中只出现一次的数字 1.题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8 ...

  8. [Swift]LeetCode724. 寻找数组的中心索引 | Find Pivot Index

    Given an array of integers nums, write a method that returns the "pivot" index of this arr ...

  9. [Swift]LeetCode980. 不同路径 III | Unique Paths III

    On a 2-dimensional grid, there are 4 types of squares: 1 represents the starting square.  There is e ...

  10. linux入门--Linux桌面环境(桌面系统)大比拼[附带优缺点]

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...