VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据

本 示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com)

Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
    Dim ListenSocket As Socket

    Dim Dict As New Dictionary(Of String, Socket) '用于保存连接的客户的套接字的键值对集合
    Dim DictThre As New Dictionary(Of String, Thread) '用于保存通信线程的键值对集合
    Dim LocalIp As String

    Dim SendBuff() As Byte

    Public Sub getIp()     '获取本机所有网卡的IP
        Dim Address() As System.Net.IPAddress
        Dim i As Integer
        Address = Dns.GetHostByName(Dns.GetHostName()).AddressList
        If UBound(Address) < 0 Then
            MsgBox("未能查找到本台电脑安装的网卡,暂不能启动本软件。", MsgBoxStyle.Critical + vbOKOnly, "注意")
            End
        Else
            For i = 0 To UBound(Address)
                comboBox4.Items.Add(Address(i).ToString())
            Next
            comboBox4.SelectedIndex = 0
            LocalIp = comboBox4.Text.Trim()
        End If
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        getIp()
        comboBox4.SelectedIndex = 0
    End Sub

    Private Sub btn_conn_Click(sender As Object, e As EventArgs) Handles btn_conn.Click
        If btn_conn.Text = "开启TCP服务,允许新客户端接入" Then
            TextBox.CheckForIllegalCrossThreadCalls = False             '取消文本框的跨线程检查
            Dim localAddress As IPAddress = IPAddress.Parse(comboBox4.Text.Trim())
            Dim EndPoint As New IPEndPoint(localAddress, txb_port.Text) '创建一个网络节点对象
            ListenSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            ListenSocket.Bind(EndPoint)                                 '给负责监听的套接字绑定一个网络节点
            ListenSocket.Listen(100)                                    '侦听,最多接受100个连接
            Dim thre = New Thread(AddressOf Connect)                    '创建一个新的线程用于处理客户端发来的连接请求
            thre.IsBackground = True                                    '设为后台线程
            thre.Start()                                                '开启线程           
            btn_conn.Text = "停止新客户端连接"
            listBox2.Items.Add("TCP端口监听服务已开启,新客户端设备可以连接并上传数据......")
            listBox2.Items.Add("")
            listBox2.SelectedIndex = listBox2.Items.Count - 1

        Else            
            ListenSocket.Close()
            ListenSocket = Nothing
            btn_conn.Text = "开启TCP服务,允许新客户端接入"
            listBox2.Items.Add("TCP服务端已禁止新客户端连接,已连接的客户端设备可继续上传数据......")
            listBox2.Items.Add("")
            listBox2.SelectedIndex = listBox2.Items.Count - 1
        End If
    End Sub

    Sub Connect() '处理客户端的连接请求的过程
        While True
            Try
                Dim SockConect As Socket = listenSocket.Accept
                Dict.Add(SockConect.RemoteEndPoint.ToString, SockConect)    '将连接成功的套接字添加到键值对集合
                listBox1.Items.Add(SockConect.RemoteEndPoint.ToString)      '添加到列表
                Dim Thre As New Thread(AddressOf RecClient)                 '创建一个新的线程用于和链接成功的套接字通信
                Thre.IsBackground = True                                    '设为后台线程
                Thre.Start(SockConect)
                DictThre.Add(SockConect.RemoteEndPoint.ToString, Thre)      '将创建的通信线程添加到键值对集合
            Catch

            End Try

        End While
    End Sub

    Sub RecClient(ByVal SockTelNet As Socket) '处理客户端发来的数据
        While True
            Try
                Dim getdata(1024) As Byte
                Dim RecLen As Int32
                Dim HexStr As String

                Try '捕获异常
                    RecLen = SockTelNet.Receive(getdata) '接受客户端发来得信息
                Catch ss As SocketException
                    listBox2.Items.Add(ss.NativeErrorCode & vbCrLf & ss.Message) '显示错误信息
                    Dict.Remove(SockTelNet.RemoteEndPoint.ToString) '移除断开连接的套接字                    
                    Return
                Catch s As Exception
                    listBox2.Items.Add(s.Message)
                    Return
                End Try

                If RecLen > 0 Then
                    Dim StrMsg As String
                    StrMsg = DateTime.Now.ToLongTimeString() + "  Get From " + SockTelNet.RemoteEndPoint.ToString + " : "
                    For i = 0 To RecLen - 1
                        StrMsg = StrMsg + getdata(i).ToString("X2") + " "
                    Next
                    If listBox2.Items.Count() > 100 Then listBox2.Items.Clear()
                    listBox2.Items.Add(StrMsg)

                    Select Case getdata(0)
                        Case &HC1, &HCF
                            If getdata(0) = &HC1 Then
                                StrMsg = "数据解析:IC读卡器上传卡号,"
                            Else
                                StrMsg = "数据解析:IC卡离开读卡器,"
                            End If
                            StrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"
                            StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "卡号长度[" + getdata(9).ToString("D") + "],"
                            HexStr = ""
                            For i = 10 To 10 + getdata(9) - 1
                                HexStr = HexStr + getdata(i).ToString("X2")
                            Next
                            StrMsg = StrMsg + "16进制卡号[" + HexStr + "],"
                            HexStr = ""
                            For i = 10 + getdata(9) To RecLen - 1
                                HexStr = HexStr + getdata(i).ToString("X2")
                            Next
                            StrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"
                            listBox2.Items.Add(StrMsg)
                            listBox2.Items.Add("")
                            listBox2.SelectedIndex = listBox2.Items.Count - 1

                            If CheckBox1.Checked Then
                                GetRespData()
                                SockTelNet.Send(SendBuff)

                                StrMsg = DateTime.Now.ToLongTimeString() + "  Send To  " + SockTelNet.RemoteEndPoint.ToString + " : "
                                For i = 0 To SendBuff.Length - 1
                                    StrMsg = StrMsg + SendBuff(i).ToString("X2") + " "
                                Next
                                listBox2.Items.Add(StrMsg)
                                listBox2.Items.Add("")
                                listBox2.SelectedIndex = listBox2.Items.Count - 1
                            End If

                        Case &HD1, &HDF
                            If getdata(0) = &HD1 Then
                                StrMsg = "数据解析:ID读卡器上传卡号,"
                            Else
                                StrMsg = "数据解析:ID卡离开读卡器,"
                            End If
                            StrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"
                            StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "16进制卡号[" + getdata(9).ToString("X2") + getdata(10).ToString("X2") + getdata(11).ToString("X2") + getdata(12).ToString("X2") + getdata(13).ToString("X2") + "],"
                            HexStr = ""
                            For i = 14 To RecLen - 1
                                HexStr = HexStr + getdata(i).ToString("X2")
                            Next
                            StrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"
                            listBox2.Items.Add(StrMsg)
                            listBox2.Items.Add("")
                            listBox2.SelectedIndex = listBox2.Items.Count - 1

                        Case &HF3
                            StrMsg = "数据解析:读卡器心跳数据包,"
                            StrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"
                            StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"
                            StrMsg = StrMsg + "心跳类型[" + getdata(9).ToString("X2") + "],"
                            StrMsg = StrMsg + "长度[" + getdata(10).ToString("D") + "],"
                            StrMsg = StrMsg + "继电器状态[" + getdata(11).ToString("X2") + "],"
                            StrMsg = StrMsg + "外部输入状态[" + getdata(12).ToString("X2") + "],"
                            StrMsg = StrMsg + "随机动态码[" + getdata(13).ToString("X2") + getdata(14).ToString("X2") + getdata(15).ToString("X2") + getdata(17).ToString("X2") + "],"
                            HexStr = ""
                            For i = 17 To RecLen - 1
                                HexStr = HexStr + getdata(i).ToString("X2")
                            Next
                            StrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"
                            listBox2.Items.Add(StrMsg)
                            listBox2.Items.Add("")
                            listBox2.SelectedIndex = listBox2.Items.Count - 1
                    End Select

                End If
            Catch
            End Try
        End While
    End Sub
    '选择在线设备向其发送指令
    Sub ButtoSend(ByVal sendcode As Integer)
        Dim seleid As String
        Dim dispstr As String
        Dim i As Integer

        If listBox1.SelectedIndex >= 0 Then
            seleid = listBox1.Text
            GetSenddata(sendcode)
            Dict.Item(seleid).Send(SendBuff)

            dispstr = DateTime.Now.ToLongTimeString() + "  Send To  " + seleid + " : "
            For i = 0 To SendBuff.Length - 1
                dispstr = dispstr + SendBuff(i).ToString("X2") + " "
            Next
            listBox2.Items.Add(dispstr)
            listBox2.Items.Add("")
            listBox2.SelectedIndex = listBox2.Items.Count - 1
        Else
            MsgBox("请先在客户端列表中选择要发送指令的在线客户端!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")
        End If
    End Sub

    '按回应需要生成发送缓冲数据
    Sub GetRespData()
        If RadioButton3.Checked Then
            GetSenddata(0)
        ElseIf RadioButton4.Checked Then
            GetSenddata(1)
        ElseIf RadioButton5.Checked Then
            GetSenddata(2)
        Else
            GetSenddata(3)
        End If
    End Sub

    '按发送需要生成发送缓冲数据
    Sub GetSenddata(ByVal sendcode As Integer)
        Dim i As Long
        Dim strs As String
        Dim textbyte() As Byte

        Select Case sendcode
            Case 0
                ReDim SendBuff(38)
                SendBuff(0) = &H5A      '驱动显示文字+蜂鸣响声的功能码
                SendBuff(1) = 0         '机号低位
                SendBuff(2) = 0         '机号高位,高低位为0表示任意机号
                If checkBox2.Checked Then   '蜂鸣响声
                    SendBuff(3) = comboBox3.SelectedIndex   '蜂鸣响声代码
                    If radioButton2.Checked Then        '背光灯状态不变
                        SendBuff(3) = SendBuff(3) Or 128
                    End If
                Else
                    SendBuff(3) = &HFF              '不响蜂鸣声
                    If radioButton2.Checked Then    '背光灯状态不变
                        SendBuff(3) = SendBuff(3) And 127
                    End If
                End If
                SendBuff(4) = dispdelay.Value

                strs = textBox12.Text + "                                   "
                textbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)
                For i = 0 To 33
                    SendBuff(5 + i) = textbyte(i)
                Next

            Case 1
                strs = "[v" + SYDX.Value.ToString() + "]"    '设置语音大小,在需要发送的语音字符串中任何位置加入[v10],表示将音量调到10级(范围0~16,0表示静音,16最大,每次重开机后,音量重置为10级)!
                strs = strs + textBox1.Text.Trim()
                textbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)
                Dim displen As Integer
                Dim voiclen As Integer
                Dim commlen As Integer

                displen = 34
                voiclen = textbyte.Length
                commlen = 10 + displen + voiclen + 4

                ReDim SendBuff(commlen)
                SendBuff(0) = &H5C      '驱动显示文字+蜂鸣响声的功能码+开继电器+播报TTS语音
                SendBuff(1) = 0         '机号低位
                SendBuff(2) = 0         '机号高位,高低位为0表示任意机号
                If checkBox2.Checked Then   '蜂鸣响声
                    SendBuff(3) = comboBox3.SelectedIndex   '蜂鸣响声代码
                    If radioButton2.Checked Then        '背光灯状态不变
                        SendBuff(3) = SendBuff(3) Or 128
                    End If
                Else
                    SendBuff(3) = &HFF              '不响蜂鸣声
                    If radioButton2.Checked Then    '背光灯状态不变
                        SendBuff(3) = SendBuff(3) And 127
                    End If
                End If

                Select Case comboBox2.SelectedIndex '根据选择开启对应的继电器
                    Case 1
                        SendBuff(4) = &HF1
                    Case 2
                        SendBuff(4) = &HF2
                    Case 3
                        SendBuff(4) = &HF3
                    Case 4
                        SendBuff(4) = &HF4
                    Case 5
                        SendBuff(4) = &HF5
                    Case 6
                        SendBuff(4) = &HF6
                    Case 7
                        SendBuff(4) = &HF7
                    Case 8
                        SendBuff(4) = &HF8
                    Case Else
                        SendBuff(4) = &HF0
                End Select
                i = CLng(textBox11.Text)    '继电器开启时长
                SendBuff(5) = i Mod 256
                SendBuff(6) = Int(i / 256) Mod 256

                SendBuff(7) = dispdelay.Value  '显示时长
                SendBuff(8) = 0                '显示起始位
                SendBuff(9) = displen          '显示长度
                SendBuff(10) = voiclen         'TTS语音长度

                strs = textBox12.Text + "                                   "
                Dim dispbyte() As Byte
                dispbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)
                For i = 0 To displen - 1        '显示文字
                    SendBuff(11 + i) = dispbyte(i)
                Next

                For i = 0 To voiclen - 1        'TTS语音
                    SendBuff(11 + displen + i) = textbyte(i)
                Next

                SendBuff(11 + displen + voiclen + 0) = &H55     '防干扰后缀
                SendBuff(11 + displen + voiclen + 1) = &HAA
                SendBuff(11 + displen + voiclen + 2) = &H66
                SendBuff(11 + displen + voiclen + 3) = &H99

            Case 2
                ReDim SendBuff(3)
                SendBuff(0) = &H96      '驱动蜂鸣响声的功能码
                SendBuff(1) = 0         '机号低位
                SendBuff(2) = 0         '机号高位,高低位为0表示任意机号
                SendBuff(3) = comboBox3.SelectedIndex

            Case 3
                ReDim SendBuff(5)
                SendBuff(0) = &H78      '驱动开关继电器的功能码
                SendBuff(1) = 0         '机号低位
                SendBuff(2) = 0         '机号高位,高低位为0表示任意机号
                Select Case comboBox2.SelectedIndex '根据选择开启对应的继电器
                    Case 1
                        SendBuff(3) = &HF1
                    Case 2
                        SendBuff(3) = &HF2
                    Case 3
                        SendBuff(3) = &HF3
                    Case 4
                        SendBuff(3) = &HF4
                    Case 5
                        SendBuff(3) = &HF5
                    Case 6
                        SendBuff(3) = &HF6
                    Case 7
                        SendBuff(3) = &HF7
                    Case 8
                        SendBuff(3) = &HF8
                    Case Else
                        SendBuff(3) = &HF0
                End Select
                i = CLng(textBox11.Text)    '开启时长
                SendBuff(4) = i Mod 256
                SendBuff(5) = Int(i / 256) Mod 256

            Case 4
                ReDim SendBuff(5)
                SendBuff(0) = &H78      '驱动开关继电器的功能码
                SendBuff(1) = 0         '机号低位
                SendBuff(2) = 0         '机号高位,高低位为0表示任意机号
                Select Case comboBox2.SelectedIndex '根据选择关闭对应的继电器
                    Case 1
                        SendBuff(3) = &HE1
                    Case 2
                        SendBuff(3) = &HE2
                    Case 3
                        SendBuff(3) = &HE3
                    Case 4
                        SendBuff(3) = &HE4
                    Case 5
                        SendBuff(3) = &HE5
                    Case 6
                        SendBuff(3) = &HE6
                    Case 7
                        SendBuff(3) = &HE7
                    Case 8
                        SendBuff(3) = &HE8
                    Case Else
                        SendBuff(3) = &HE0
                End Select
                i = CLng(textBox11.Text)    '开启时长
                SendBuff(4) = i Mod 256
                SendBuff(5) = Int(i / 256) Mod 256
        End Select
    End Sub
    Private Sub button6_Click(sender As Object, e As EventArgs) Handles button6.Click
        ButtoSend(2)
    End Sub

    Private Sub button7_Click(sender As Object, e As EventArgs) Handles button7.Click
        ButtoSend(3)
    End Sub

    Private Sub button8_Click(sender As Object, e As EventArgs) Handles button8.Click
        ButtoSend(4)
    End Sub

    Private Sub button10_Click(sender As Object, e As EventArgs) Handles button10.Click
        ButtoSend(0)
    End Sub

    Private Sub button9_Click(sender As Object, e As EventArgs) Handles button9.Click
        ButtoSend(1)
    End Sub

    Private Sub button3_Click(sender As Object, e As EventArgs) Handles button3.Click
        Dim copstr As String
        Dim I As Long
        Clipboard.Clear()
        copstr = ""
        For I = 0 To listBox2.Items.Count - 1
            copstr = copstr & listBox2.Items(I)
            copstr = copstr & vbCrLf
        Next
        Clipboard.SetText(copstr)
        MsgBox("TCP通讯日志报文已拷贝!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")
    End Sub

    Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
        listBox2.Items.Clear()
    End Sub
End Class

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/138902.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ultrascale+mpsoc系列的ZYNQ中DDR4参数设置说明

ultrascalempsoc系列的ZYNQ中DDR4参数设置说明 标题1 概述标题2 讲述平台标题3 ZYNQ的DDR设置界面参数标题4 DDR参数界面说明如下 标题1 概述 本文用于讲诉ultrascalempsoc系列中的ZYNQ的DDR4的参数设置与实际硬件中的DDR选型之间的关系&#xff0c;为FPGA设计人员探明道路。 …

云汇优想:抖音矩阵系统有哪些类型?

抖音作为中国最热门的短视频分享平台之一&#xff0c;不断推陈出新&#xff0c;在内容管理和展示方面也进行了创新。其中&#xff0c;抖音矩阵系统是一项重要的功能&#xff0c;它提供了多种类型的矩阵&#xff0c;帮助用户更好地管理和展示自己的内容。那么&#xff0c;抖音矩…

2011年11月10日 Go生态洞察:Go语言两周年纪念

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Outlook如何恢复已删除邮件

Outlook如何恢复已删除邮件 操作指引&#xff1a; Outlook客户端恢复最近7天删除的邮件&#xff1a; Outlook客户端要求最新版本&#xff0c;如没有如下选项&#xff0c;建议联机更新windows update 网页邮箱恢复最近7天删除的邮件&#xff1a;

Docker的安装配置与使用

1、docker安装与启动 首先你要保证虚拟机所在的盘要有至少20G的空间&#xff0c;因为docker开容器很吃空间的&#xff0c;其次是已经安装了yum依赖 yum install -y epel-release yum install docker-io # 安装docker配置文件 /etc/sysconfig/docker chkconfig docker on # 加…

NC65 客户、供应商、人员等基本信息校验唯一性规则的设置

NC65 客户、供应商、人员等基本信息校验唯一性规则的设置 供应商名称唯一校验&#xff0c;很容易导致重名的无法保存&#xff0c;那如何设置得如下图提示的按名称基本分类纳税人登记号等校验规则呢&#xff1f; 答&#xff1a;使用 admin 账号登录&#xff0c;然后在基础数据…

【unity2021.3.6f】运行官方 Vuforia Hololens 2 Sample 教程

文章目录 前言一、创建unity项目二、导入unity1.添加到我的资源2.在package Manage 里面去找到&#xff0c;点击下载&#xff0c;下载完成后点击Import 如下图&#xff1a;3.导入途中会有窗口弹出 很多提示&#xff0c;都点击默认选项&#xff1a;Import 、Install/Upgrade 等 …

首发!文心一言插件精品课,共创大模型应用新范式

“AI原生应用要能解决过去解决不了、解决不好的问题&#xff0c;应用才是大模型存在的意义。 ”越来越多人用AI打造自己的生产力工具、专业领域行业助手、游戏娱乐影音大师……你是否跃跃欲试却无从下手&#xff1f;机会来了&#xff01; 《文心一言插件开发课》震撼来袭&#…

keras转onnx,TensorFlow转tf.keras.models.load_model,onnx精度转换

参考&#xff1a; https://blog.csdn.net/Deaohst/article/details/126864267 转onnx 别直接转onnx。 先转PB&#xff1a; import tensorflow as tfmodel_path ./models/model.h5 # 模型文件 model tf.keras.models.load_model(model_path) model.sa…

域名及网络地址

域名系统 可以通过 ping 命令查看域名对应的 IP 地址。 查看本机的默认 DNS 域名服务器地址可以使用 nslookup 命令。 IP地址和域名之间的转换 程序中有必要使用域名是很有必要的&#xff0c;系统随时可能会因为各种原因导致 IP 地址变更。而域名则比 IP 地址稳定得多&#…

优选算法精品解析

1.双指针(前后/左右双指针) 1.1 283.移动零 快排双指针的核心算法 左边所有数 < tmp,右边所有数 > tmp,以tmp这个数为标准 1.2 1089.复习零 如果一对双指针从左向右不行,那么就从右向左,换一个方向 1.3 202.快乐数 双指针中的快慢指针: slow1,fast2 1.4 11.最多盛水的…

thinkphp5 连接多个服务器数据库

如果你的database.php 是这样&#xff0c; 这是默认的db连接配置 如果还想连接其他服务器&#xff0c;或数据库 在config.php中追加数据库配置&#xff0c; 在使用的地方调用&#xff1a; use think\Db;public function test(){$db3Db::connect(config(db3));$result $db3…

数字货币swap交易所逻辑系统开发分析方案

随着数字货币市场的快速发展&#xff0c; Swap交易所已成为一种重要的交易方式。本文将对数字货币Swap交易所逻辑系统开发进行分析&#xff0c;并探讨其优势、开发难点和解决方案。 一、数字货币Swap交易所逻辑系统开发的优势 数字货币Swap交易所是一种点对点的交易方式&#x…

LiveMedia视频监控汇聚管理平台功能中的CS客户端

平台具备独立的CS客户端可供客户使用&#xff0c;包含实时播放、监视组轮询、云镜控制、语音对讲、录像回放、报警查询、报警联动等。 实时视频 客户端支持单画面多画面显示&#xff0c;用户可选择任意一路或多路视频观看&#xff0c;视频窗口数量 1、3、6、8、9 直至 64 个可…

B树与B+树

B树 B树&#xff0c;又称多路平衡查找树&#xff0c;B树中所有结点的孩子个数的最大值称为B树的阶&#xff0c;通常用m表示。一颗m阶B树或为空树&#xff0c;或为满足如下特征的m叉树。 树中每个结点至多有m棵子树&#xff0c;即至多含有m-1个关键字若根结点不是终端结点&…

Selenium+JQuery定位方法及应用

SeleniumJQuery定位方法及应用 1 JQuery定位说明1.1 JQuery定位方法1.2 JQuery最常用的三个操作1.3 JQuery一个示例1.3.1 用户名输入框1.3.2 密码输入框1.3.3 登陆按钮1.3.4 完整代码 2 JQuery选择器2.1 常用选择器列表2.2 思考 1、关于Selenium提供了很多元素定位方法&#xf…

阿里云添加端口

目录 阿里云添加端口的方法与步骤详解 一、登录阿里云控制台 二、创建安全组 三、添加入站规则 四、添加出站规则 五、完成添加端口操作 也可 1&#xff1a;搜索轻量级服务器 2&#xff1a;点击服务器 3&#xff1a;点击添加规则 4&#xff1a;保存即可 总结 阿里云…

谈谈steam游戏搬砖的收益与风险,以及注意事项

11月CSGO市场行情分析&#xff0c;是否到了该抄底的时候了&#xff1f; 今天&#xff0c;要跟大家分享的Steam平台——全球最大的游戏平台&#xff0c;现在给大家介绍下steam搬砖项目&#xff0c;这个项目既小众又稳定。 先了解一下 steam这个平台是做什么的&#xff0c;steam…

wsl 报错:“参考的对象类型不支持尝试的操作。 Error code: Wsl/Service/0x8007273d“(win10可用)

参考文章&#xff1a;简书-Happyjava&#xff08;作者&#xff09;-wsl2出现参考的对象类型不支持尝试的操作的解决方法&#xff08;win11 永久解决&#xff09; c盘中User的用户名文件夹下的下述路径&#xff0c;创建下述文件夹&#xff0c;内容为&#xff1a;netsh winsock r…

黑客技术(网络安全)—高效自学

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习…