开源删帖
功能说明:
本程序是一个基于易语言(EPL)开发的网络通信基础工具包及功能演示集合。其核心目的是对易语言原生的 Socket 网络接口进行二次封装,提供面向对象的类库来简化 TCP 客户端、TCP 服务端以及 UDP 数据报的开发流程,同时附带了多个实际的应用场景代码片段,用于展示如何使用这些封装后的类进行具体的网络操作。
一、程序整体架构
该程序并非单一的可执行逻辑,而是由多个程序集(Assembly)组成的模块化代码集合,模拟了一个网络通信组件库的结构。主要包含了三个核心通信类(同步客户类、同步服务端、同步数据报)以及一个调试与测试类,并配合窗口程序集展示了具体的调用方法。代码中大量使用了“子程序”(Subroutine)和“变量”(Variable)来构建功能逻辑,体现了易语言中文编程的特性。
二、核心功能模块分析
1. 同步客户类(Synchronous Client Class)
这是用于实现 TCP 客户端功能的封装类。其主要作用是对底层 Socket 对象进行生命周期管理和操作封装。
- _初始化 和 _销毁:自动管理 Socket 资源的创建与释放,确保对象被创建时初始化 Socket,销毁前关闭资源,防止内存泄漏。
- 连接服务器:允许指定 IP 地址和端口号建立 TCP 连接,返回连接结果布尔值。
- 发送数据:将字节集数据通过已连接的 Socket 发送给服务器。
- 接收数据:从服务器端读取返回的数据,返回字节集类型。
- 断开连接:主动关闭当前 Socket 连接。
该类的封装使得开发者无需直接调用复杂的 API,只需实例化该类即可实现标准的 HTTP 请求或自定义协议交互。
2. 同步服务端(Synchronous Server Class)
这是用于实现 TCP 服务端功能的封装类,负责监听端口并处理并发或顺序的连接请求。
- 启动:绑定指定端口并开始监听,可设置最大并发数,若端口占用则启动失败。
- 停止:解除端口绑定,停止监听。
- 接受:等待客户端连接,获取客户句柄(Handle),并可获取对方的 IP 和端口信息。
- 发送/接收:针对特定的客户句柄进行数据的收发,支持多用户会话的基本逻辑框架。
- 断开:切断与特定客户的连接。
此模块为构建聊天室、游戏服务器或即时通讯后台提供了基础架构。
3. 同步数据报(Synchronous Datagram Class)
这是基于 UDP 协议的封装类,适用于无连接、低延迟的网络传输场景。
- 绑定端口:可以选择性地绑定本地 IP 和端口,若不绑定则由系统随机分配。
- 接收:非阻塞模式下检测可读状态,定向接收数据包的来源 IP 和端口。
- 发送:指定目标 IP、端口发送字节集数据。
相比 TCP,此类更适合状态广播、心跳检测或对实时性要求高但允许丢包的场景。
4. 调试类与 SOCKET 服务测试
该部分主要用于底层的测试和验证。
- 包含原始 Socket 命令的直接调用(如 sock.创建、sock.绑定、sock.监听等),不经过高级封装,用于验证系统 Socket 能力。
- 包含代理 IP 列表的注释,暗示该程序可能曾被用于测试网络代理或通过不同节点进行连通性测试。
- 实现了基本的 Echo 服务器逻辑,接收到连接后回复带时间戳的字符串,用于测试连接是否正常建立及延迟。
三、窗口程序集内的演示逻辑
窗口程序集 1 虽然出现了多次定义(可能是不同片段的拼接),但集中展示了如何应用上述类库:
1. HTTP 请求演示:利用“同步客户类”连接到百度网站(www.baidu.com:80),构造符合 HTTP/1.1 协议的 GET 请求头(包括 Host 和 Connection 字段),循环接收返回的字节集直到为空,最后断开连接。这完整演示了一个简易浏览器核心功能的实现。
2. UDP 接收演示:利用“同步数据报”绑定 80 端口并阻塞接收数据包,展示了简单的 UDP 监听流程。
3. 服务端响应演示:利用“同步服务端”启动监听,接受连接后向客户端发送"ok"字符串,然后断开。展示了服务端的最简应答流程。
四、技术特点总结
1. 面向对象思想:通过创建“同步客户类”等程序集,将数据(套接字句柄)与行为(连接、发送)打包,便于复用和维护。
2. 阻塞与非阻塞控制:代码中显式调用了“阻塞 (套接字,假)"和“阻塞 (套接字,真)",表明开发者在尝试优化程序的响应速度,避免界面卡顿。特别是在服务端和 UDP 类中,开启了非阻塞模式并结合“可读检查”,提高了吞吐量。
3. 兼容性基础:直接使用“转换 IP 地址”、“到字节集”等易语言内置函数处理数据类型,确保在网络传输中最小单位的二进制数据正确流转。
4. 错误处理:部分逻辑包含了返回值的判断(如“如果真 (同步服务端。启动 (80) = 假)"),并在端口被占用时弹出提示框,增强了软件的健壮性。
五、潜在应用场景
基于此代码结构,开发者可以进一步扩展开发以下类型的软件:
- 简易网页爬虫:通过修改 HTTP 请求头部和路径抓取特定页面内容。
- 局域网消息推送工具:使用 UDP 类进行广播。
- 远程控制终端:结合 TCP 服务端和客户端类,实现远程输入输出转发。
- 流量监控与采集:解析接收到的字节集数据进行分析。
综上所述,该程序是一个功能完备的易语言网络编程基础框架,涵盖了主流的 TCP/IP 和 UDP 通信模型,对于学习易语言网络开发或快速搭建网络原型具有重要的参考价值。代码结构清晰,分离了通信逻辑与业务逻辑,便于后期维护和功能扩展。
======同步客户类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 连接服务器
| |
| |------ 发送数据
| |
| |------ 接收数据
| |
| |------ 断开连接
| |
| |
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |
======同步数据报
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 绑定端口
| |
| |------ 接收
| |
| |------ 发送
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |
======同步服务端
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 启动
| |
| |------ 停止
| |
| |------ 接受
| |
| |------ 发送
| |
| |------ 接收
| |
| |------ 断开
======调试类
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ 备注
| |
| |------ 测试
| |
| |------ SOCKET服务测试
| |
| |------ SOCKET客户测试
| |
| |------ 数组测试
| |
| |
======函数类
| |
| |------ 函数_载入DLL
| |
| |------ 函数_卸载DLL
| |
| |------ 函数_取函数指针
| |
| |------ 函数_取指针
| |
| |------ 钩子回调
| |
| |------ 窗口回调
| |
| |------ 调用子程序__
| |
| |------ 调用子程序_文本单参
| |
| |------ 调用子程序_
| |
| |------ 取模块路径
| |
| |------ PeLoader_LoadLibrary
| |
| |------ PeLoader_FreeLibrary
| |
| |------ PeLoader_GetProcAddress
| |
| |------ PeLoader_GetEntryPoint
| |
| |
======内存类
| |
| |------ 内存_申请
| |
| |------ 内存_释放
| |
| |------ 内存_尺寸
| |
| |------ 内存_保护
| |
| |------ 内存_读整数
| |
| |------ 内存_写整数
| |
| |------ 内存_写短整数
| |
| |------ 内存_读短整数
| |
| |------ 内存_复制
| |
| |------ 内存_优化
| |
| |------ 内存_写字节集
| |
| |------ Asm_RtlMoveMemory
| |
| |------ NtRtlMoveMemory
| |
| |------ 内存_读字节集
| |
| |------ 内存_写文本
| |
| |------ 内存_读文本
| |
| |------ 原子_加1
| |
| |------ 原子_减1
| |
| |------ 取子程序地址
| |
| |------ 取子程序真实地址
| |
| |------ 取指针_字节集
| |
| |------ 取指针_文本型
| |
| |------ 取指针_整数型
| |
| |------ 取指针_逻辑型
| |
| |------ 取指针_短整数
| |
| |------ 取指针_长整型
| |
| |------ 取指针_双精度
| |
| |------ 取指针_整数数组
| |
| |------ 分割线
| |
| |------ _申请内存
| |
| |------ _释放内存
| |
| |------ _内存写字节集
| |
| |------ _内存读字节集
| |
| |
======窗口类
| |
| |------ 取窗口标题_
| |
| |------ 取窗口类名
| |
| |------ 置窗口标题
| |
| |------ 信息框_
| |
| |------ 信息框2_
| |
| |------ 窗口销毁
| |
| |------ 窗口销毁_
| |
| |------ 取窗口边框尺寸
| |
| |------ 置窗口边框尺寸
| |
| |------ 取窗口信息
| |
| |------ 窗口最大化
| |
| |------ 窗口最小化
| |
| |------ 总在最前
| |
| |------ 禁止
| |
| |------ 窗口置父
| |
| |------ 取父窗口句柄
| |
| |------ 窗口重画
| |
| |------ 接管窗口消息
| |
| |
======键鼠类
| |
| |------ 键鼠_取键状态
| |
| |------ 键鼠_取功能键状态
| |
| |------ 移动鼠标
| |
| |------ 按键_
| |
| |------ 监视热键
| |
| |------ 撤销监视
| |
| |------ 热键过程
| |
| |
======系统类
| |
| |------ 取CPU核心数
| |
| |------ 取目录_windows
| |
| |------ 取目录_System32
| |
| |------ 取目录_桌面
| |
| |------ 取特殊目录
| |
| |------ 取操作系统版本
| |
| |------ 打开指定网址_1
| |
| |------ 打开指定网址_2
| |
| |------ 系统_写启动项
| |
| |------ 目录是否存在
| |
| |------ 取屏幕宽度_
| |
| |------ 取屏幕高度_
| |
| |
======进程类
| |
| |------ 提升进程权限
| |
| |------ 提升进程权限D
| |
| |------ 创建进程
| |
| |------ 取自进程ID
| |
| |------ 取自进程伪ID
| |
| |------ 取进程路径
| |
| |------ 取进程模块
| |
| |------ 取进程ID
| |
| |------ 进程是否有效
| |
| |------ 进程枚举
| |
| |------ 进程结束
| |
| |------ 打开进程
| |
| |
======线程类
| |
| |------ 启动线程_
| |
| |------ 销毁线程_
| |
| |------ 关闭句柄
| |
| |------ 线程挂起
| |
| |------ 线程恢复
| |
| |------ 线程取状态
| |
| |------ 线程取返回值
| |
| |------ 线程等待
| |
| |------ 置优先级
| |
| |------ 取优先级
| |
| |------ 取自线程ID
| |
| |------ 取自线程伪ID
| |
| |------ 创建进入许可证_
| |
| |------ 进入许可区_
| |
| |------ 退出许可区_
| |
| |------ 删除进入许可证_
| |
| |------ 线程池_启动
| |
| |------ 线程池_工作线程
| |
| |------ 线程池_加入工作
| |
| |------ 线程池_销毁
| |
| |------ 线程池_取任务数
| |
| |------ 线程池_全部暂停
| |
| |------ 线程池_全部运行
| |
| |
======HTTP类
| |
| |------ GET读文件
| |
| |------ POST读文件
| |
| |------ 下载文件
| |
| |------ HTTP_内部使用
| |
| |------ HTTP_补充协议头
| |
| |------ HTTP_状态解析
| |
| |------ 取域名
| |
| |------ 取端口
| |
| |------ 取页面地址
| |
| |------ 取IP地址_
| |
| |------ 转换URL编码
| |
| |------ 转换URL解码
| |
| |------ 置cookies
| |
| |------ 清空cookies
| |
| |------ 取cookies
| |
| |------ 时间到GMT格式_
| |
| |------ GMT格式到时间_
| |
| |------ 取时间戳_Unix
| |
| |------ 时间到时间戳
| |
| |
======GDIS类
| |
| |------ 取窗口场景设备
| |
| |
======转换类
| |
| |------ 十六到十
| |
| |------ 十到十六
| |
| |------ 去除首部零
| |
| |------ 到十六进制文本
| |
| |------ 到十进制数
| |
| |------ 坐标转范围
| |
| |------ 范围转坐标
| |
| |------ URL中文编码
| |
| |------ URL编码
| |
| |------ URL解码
| |
| |------ Base64编码
| |
| |------ Base64解码
| |
| |------ Ansi转Unicode
| |
| |------ Utf8转Unicode
| |
| |------ Unicode转Ansi
| |
| |------ Unicode转Utf8
| |
| |------ Ansi转Utf8
| |
| |------ Utf8转Ansi
| |
| |
======爱易链
| |
| |------ 爱易链创建
| |
| |------ 爱易链压入
| |
| |------ 爱易链弹出
| |
| |------ 爱易链销毁
| |
| |
======堆栈类
| |
| |------ 栈_初始化
| |
| |------ 栈_压入
| |
| |------ 栈_弹出
| |
| |------ 栈_清空
| |
| |------ 栈_数量
| |
| |------ 堆_初始化
| |
| |------ 堆_取出
| |
| |------ 堆_释放
| |
| |------ 堆_销毁
| |
| |
======拖放类
| |
| |------ 注册文件拖放事件
| |
| |------ 文件拖放函数
| |
| |------ 撤消文件拖放事件
| |
| |
======类用类
| |
| |------ 子程序1
| |
| |
======数据类
| |
| |------ 填充字节集
| |
| |------ 填充文本
| |
| |------ 还原字节集
| |
| |------ 单字节换行符替换
| |
| |------ 还原字节集2
| |
| |------ 是否为偶数
| |
| |------ 查看字节集2
| |
| |------ 查看字节集
| |
| |------ 取文件名
| |
| |
======句柄类
| |
| |------ 枚举子窗口
| |
| |------ 取任务栏句柄
| |
| |------ 取窗口进程
| |
| |------ 发送消息_
| |
| |------ 投递消息_
| |
| |------ 取前台窗口句柄
| |
| |------ 取前台活动窗口
| |
| |------ 取焦点句柄
| |
| |------ 编辑框_发送文本
| |
| |------ 窗口闪动
| |
| |------ 取坐标句柄
| |
| |------ 取鼠标所在位置句柄
| |
| |------ 取进程窗口
| |
| |
======内核类
| |
| |------ IOCP_创建
| |
| |------ IOCP_等待
| |
| |------ IOCP_发送
| |
| |------ 等待对象信号
| |
| |------ 创建同步事件对象
| |
| |------ 打开同步事件对象
| |
| |
======加解密
| |
| |------ MD5
| |
| |------ GZIP压缩
| |
| |------ GZIP解压
| |
| |------ GZIP初始化
| |
| |------ QEHash
| |
| |------ RC4_加密
| |
| |------ RC4_解密
| |
| |------ rc4自动识别
| |
| |
======其它类
| |
| |------ 调试输出字节集
| |
| |------ _模块_调用转向
| |
| |------ 设置定时器
| |
| |------ 销毁定时器
| |
| |------ 取随机颜色
| |
| |------ 生成汇编代码
| |
| |------ 取时间戳
| |
| |
======钩子类
| |
| |------ _销毁
| |
| |------ 取地址
| |
| |------ 卸载
| |
| |------ 安装
| |
| |------ 调用原函数
| |
| |
======socket
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 预载入函数
| |
| |------ 安装socket
| |
| |------ 卸载socket
| |
| |------ 创建
| |
| |------ 绑定
| |
| |------ 监听
| |
| |------ 接受
| |
| |------ 连接
| |
| |------ 发送
| |
| |------ 接收
| |
| |------ 定向发送
| |
| |------ 定向接收
| |
| |------ 断开
| |
| |------ 取远程地址
| |
| |------ 取本地地址
| |
| |------ 取发送缓冲区尺寸
| |
| |------ 取接收缓冲区尺寸
| |
| |------ 取套接字信息
| |
| |------ 阻塞
| |
| |------ 销毁
| |
| |------ 取回错误
| |
| |------ IP到整数
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。