易语言UDP分块传输屏幕截图,源码可以稍加修改为UDP广播式传输屏幕截图。
.版本 2
.支持库 sock
.支持库 spec
.支持库 EThread
.支持库 commobj
.支持库 dp1
.程序集 窗口程序集_启动窗口
.程序集变量 对方信息_Ser, 对方信息
.程序集变量 UDP_Ser, 网络数据报
.程序集变量 UDP_Cli, 网络数据报
.子程序 __启动窗口_创建完毕
调试输出 (UDP_Ser.配置 (79))
调试输出 (UDP_Cli.配置 (0))
启动线程 (&_UDP_Ser_收发, , )
启动线程 (&_UDP_CLI_收发, , )
.子程序 _UDP_Ser_收发
.局部变量 L, 逻辑型
.局部变量 data, 字节集
.局部变量 长度, 整数型, 静态
.局部变量 _data, 快速字节集对象, 静态
.局部变量 _头, 字节集
.局部变量 _头_整数, 整数型
.判断循环首 (真)
data = UDP_Ser.接收 (0, 对方信息_Ser, L)
.判断开始 (L)
.判断开始 (取字节集长度 (data) = 6 且 取字节集左边 (data, 2) = { 1, 0 })
_data.清除字节集 ()
长度 = 取字节集数据 (data, #整数型, 3)
' 结束 = { 2, 0 } + 取字节集右边 (data, 4)
_头_整数 = 1
_头 = 到字节集 (_头_整数)
UDP_Ser.发送 (对方信息_Ser, { 0 }, 0)
.判断 (长度 ≠ 0)
.判断开始 (取字节集左边 (data, 4) = _头)
_data.添加 (取字节集右边 (data, 取字节集长度 (data) - 4))
_头_整数 = _头_整数 + 1
_头 = 到字节集 (_头_整数)
.默认
.判断结束
.判断开始 (_data.取长度 () ≥ 长度)
底图 = 解压数据 (_data.取字节集 (, ))
_data.清除字节集 ()
长度 = 0
_头_整数 = 1
_头 = 到字节集 (_头_整数)
' 启动线程 (&_按钮2_被单击, , )
' 调试输出 (对方信息_Ser.对方IP, 对方信息_Ser.对方端口)
延时 (100)
.计次循环首 (2, )
延时 (1)
UDP_Ser.发送 (对方信息_Ser, { 0, 1, 2, 3, 4, 5, 6, 9, 8, 7 }, 0)
.计次循环尾 ()
到循环尾 ()
.默认
.判断结束
UDP_Ser.发送 (对方信息_Ser, { 0 }, 0)
' 调试输出 (“跳动一下”)
.默认
.判断结束
.默认
.判断结束
.判断循环尾 ()
.子程序 _UDP_CLI_收发
.局部变量 对方信息_CLI, 对方信息
.局部变量 L, 逻辑型
.局部变量 Aa, 整数型
.局部变量 i, 整数型
.局部变量 Data, 字节集
.局部变量 图片, 字节集
.局部变量 图片_L, 整数型
.局部变量 _sj, 双精度小数型
.局部变量 _sj_, 双精度小数型
对方信息_CLI.对方IP = “127.0.0.1”
对方信息_CLI.对方端口 = 79
.判断循环首 (真)
_sj = 取启动时间 ()
.判断开始 (_sj - _sj_ > 8000)
_sj_ = _sj
UDP_Cli.发送 (对方信息_CLI, { 0, 2, 4, 6, 7, 9 }, 0)
调试输出 (“fs”)
.默认
' 调试输出 (“wf”)
.判断结束
Data = UDP_Cli.接收 (800, 对方信息_CLI, L)
.判断开始 (L)
.判断开始 (Data = { 0, 1, 2, 3, 4, 5, 6, 9, 8, 7 })
图片 = 压缩数据 (屏幕截图 (, , , , 4))
图片_L = 取字节集长度 (图片)
L = 假
.判断循环首 (取反 (L))
UDP_Cli.发送 (对方信息_CLI, { 1, 0 } + 到字节集 (图片_L), 0)
UDP_Cli.接收 (800, 对方信息_CLI, L)
.判断开始 (取反 (L))
延时 (800)
调试输出 (L)
.默认
.判断结束
.判断循环尾 ()
Aa = 0
.变量循环首 (1, 图片_L, 500, i)
Aa = Aa + 1
L = 假
.判断循环首 (取反 (L))
UDP_Cli.发送 (对方信息_CLI, 到字节集 (Aa) + 取字节集中间 (图片, i, 500), 0)
UDP_Cli.接收 (800, 对方信息_CLI, L)
.判断开始 (取反 (L))
延时 (800)
.默认
跳出循环 ()
.判断结束
.判断循环尾 ()
.变量循环尾 ()
.默认
.判断结束
_sj_ = 取启动时间 ()
.默认
.判断结束
.判断循环尾 ()
.子程序 _按钮1_被单击
调试输出 (对方信息_Ser.对方IP, 对方信息_Ser.对方端口)
UDP_Ser.发送 (对方信息_Ser, { 0, 1, 2, 3, 4, 5, 6, 9, 8, 7 }, 0)