[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. [LeetCode] Positions of Large Groups 大群组的位置

    In a string S of lowercase letters, these letters form consecutive groups of the same character. For ...

  2. oracle数据库完全卸载步骤

    1.关闭oracle所有的服务.可以在windows的服务管理器中关闭; 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...

  3. Jvm 内存模型 —— GC

    一.Jvm 原理 二.Jvm 运行时数据区( Run-Time Data Areas ) (主要是关于 non-stack 区域的详细划分) 从上图可以清楚地看到:程序计数器.Jvm 栈.本地方法栈 ...

  4. cadence钻孔文件及光绘文件的生成

    完成PCB布线之后,需要生成钻孔文件和光绘文件交给PCB厂家制作PCB板,下面总结详细方法!

  5. 性能测试学习 第九课--LR12中controller基础知识

    1.设计手工场景,理解集合点的策略 2.添加load generator 一.controller基础知识 1.controller的原理 通过场景设计来模拟用户的真实操作并调用vugen中的脚本,然 ...

  6. TCSL:遇到网络正常,但是添加网口打印机总是失效的问题。

    1. 环境 这家店要换成TCSL餐饮系统,但是店主希望在换系统时候,保持原来系统正常运转.所以,一开始踩点和实施都是小心翼翼~~ 不过,还是遇到问题,没法打印,如果开启TCSL打印服务,就会和原来的餐 ...

  7. linux 重新生成网卡配置文件

    nmcli connection add con-name home type ethernet ifname eth1 autoconnect yes ip4 10.1.252.60/24 gw4 ...

  8. hibernate的session的增删查改

    一.增 //******************增加****************** Customer c = new Customer(); c.setCust_name("阿里云&q ...

  9. 出现 HTTP Status 500 - Servlet.init() for servlet springmvc threw exception 异常的原因及解决方法

    今天做项目的时候遇到了这个问题 其中有一句是Caused by: org.springframework.beans.factory.BeanCreationException: Error crea ...

  10. HashMap 相关面试题及其解答

    Q:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点.当链表长度超过 8 时,链表转换为红黑树. transient Node<K,V>[] ...