VB 用UDP协议接收数据

fuck-forever 2019-07-12 09:57:59
VB 用UDP协议接收数据,传输协议上说是有符号的16位整数,我在用winsock接收的时候应该用byte来接收在将数据按高低位组合ma(试过integer提示不符合的数据类型),还有传输的时候把数据包拆包发送了,我想问问这种情况下怎么接收数据?
...全文
499 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuck-forever 2019-07-16
  • 打赏
  • 举报
回复
引用 1 楼 现在还是人类 的回复:
接收到字节数组,然后用API函数 CopyMemory 把数据复制到指定类型或结构体,如:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
                                                    Destination As Any, _
                                                    Source As Any, _
                                                    ByVal Length As Long)

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim lpBuff() As Byte, _
        size_buff As Integer
    ReDim lpBuff(bytesTotal - 1)
    Winsock1.GetData lpBuff, vbByte + vbArray, bytesTotal
    CopyMemory size_buff, lpBuff(0), 2
    Debug.Print "integer:" & CStr(size_buff)
End Sub
多谢大哥!还有一个问题就是对方用UDP协议传输数据,112ms发送一个数据包,数据包122848字节大,他把数据包拆包发送,共分为349帧发,我应该怎么接收呢
fuck-forever 2019-07-16
  • 打赏
  • 举报
回复
引用 4 楼 现在还是人类 的回复:
你可以参考这个帖子我的一些处理理念 https://bbs.csdn.net/topics/360134040
好的,多谢啦。结帖啦
现在还是人类 2019-07-16
  • 打赏
  • 举报
回复
你可以参考这个帖子我的一些处理理念 https://bbs.csdn.net/topics/360134040
现在还是人类 2019-07-16
  • 打赏
  • 举报
回复
通常要保证数据的完整性就要依靠通讯协议或数据格式。 比如你可以定义数据结构,如: 先用4个字节为固定的包头,用来识别一个数据包的开始,例:0x00FFEE00 再用4个字节为数据大小,范围是 0-4294967295 也就是 0-4GB 的大小范围 然后开始传输你的数据 传输完指定大小的数据后用1-4个个字节作为数据校验码,如:CRC8/CRC16/CRC32校验等 最后再弄4个字节作为包尾,例:0x00EEFF00 这样接收数据时就可以通过这个特性做数据校验与分包了,具体过程可以参考单片机做串口通讯时的处理过程,很高效简洁的。
现在还是人类 2019-07-14
  • 打赏
  • 举报
回复
接收到字节数组,然后用API函数 CopyMemory 把数据复制到指定类型或结构体,如:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
                                                    Destination As Any, _
                                                    Source As Any, _
                                                    ByVal Length As Long)

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim lpBuff() As Byte, _
        size_buff As Integer
    ReDim lpBuff(bytesTotal - 1)
    Winsock1.GetData lpBuff, vbByte + vbArray, bytesTotal
    CopyMemory size_buff, lpBuff(0), 2
    Debug.Print "integer:" & CStr(size_buff)
End Sub
源码链接: https://pan.quark.cn/s/a4b39357ea24 在本研究中,我们将详细研究如何借助Python执行数据可视化,旨在剖析2018年期间中国四个主要城市——北京、上海、广州以及深圳的空气质量状况。通过绘制反映空气质量指数(AQI)与细颗粒物(PM2.5)变化趋势的图表,我们能够深入理解这些大都市全年的空气环境质量,并明确评估其优良天气所占的比重。 我们必须首先进行数据准备工作。在当前提供的压缩文件内,名为"2018天气"的文件极有可能是数据来源,其中可能收录了涉及四个城市每日空气质量监测的详细信息。这些数据通常涵盖日期、城市名称、AQI数值、PM2.5含量等核心参数。在Python编程环境中,我们惯常运用pandas库来对这类结构化数据进行高效的处理和分析。 1. **数据导入与初步处理**: - 利用`pandas.read_csv()`方法来导入存储为CSV格式的数据资料。 - 数据整理:对数据中的空白项、非正常数值进行修正,保证数据的精确性。 - 调整日期字段的格式,确保其能够适用于时间序列分析的需求。 2. **数据深度分析**: - 针对每个城市的AQI和PM2.5数据执行统计性描述,例如计算平均值、中位数、标准偏差等指标。 - 确定空气质量良好天气的天数,即那些AQI值低于75(依据中国的空气质量评估标准)的日数。 3. **数据呈现**: - 运用matplotlib或seaborn工具绘制折线图,直观展示四个城市在2018年全年的AQI和PM2.5变化动态。 - 可通过采用不同的颜色方案和线条类型来区分不同城市的数据系列。 - 添加必要的图示元素,如日期坐标轴、城市名称标注、图表标题及图例说明,以提升图表的可读...

7,787

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧