UDP类 提供 UDP 数据报收发:启动(端口) 即服务端绑定收包;也可「连接」记住默认对端后 发送。无 TCP 式连接、无粘包;每包独立,回调带对端 IP/端口。
类型名必须写 UDP类。声明变量时一般会自动创建会话,多数情况不必手写 创建UDP()。
与 TCP类 对照:可靠流式/多客户端用 TCP;短消息、广播、自定义协议用 UDP。
1. 粗暴写法
1.1 服务端:启动 → 数据到达 → 回发
UDP类 srv
函数 收到(整数 id, 文本 IP, 整数 端口, 文本 IP端口, 文本 data) {
输出(IP端口 + " => " + data)
srv.发送到(IP, 端口, data) ' 回显
}
函数 主窗口.创建完毕() {
srv.数据到达(&收到)
如果 (srv.启动(19300, "127.0.0.1") == 假) {
信息框(srv.错误信息, 0)
}
}
连接 ID 固定为 1(单套接字);真正区分对端用回调里的 IP / 端口。
1.2 客户端:连接默认对端 → 发送
UDP类 cli
cli.连接("127.0.0.1", 19300)
cli.发送("hello")
' 或:cli.发送到("127.0.0.1", 19300, "hello")
连接 没有握手,只记住默认对端;未 启动 时会自动绑临时端口以便收回复。
2. 使用顺序
- 声明
UDP类 - 按需:
置超时/置最大包长/置广播 - 先注册
数据到达(及可选数据到达字节集),再启动 发送/发送到/广播;同步场景可用接收- 结束时
停止/关闭/重置
3. 事件(界面线程)
| 事件 | 回调形参 | 说明 |
|---|---|---|
数据到达 |
(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口, 文本 数据) |
文本按 UTF-8 解释 |
数据到达字节集 |
(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口, 字节集 数据) |
原始字节;可与文本回调同时注册 |
传 0 清除。指针仅本函数内有效。
4. 属性(只读,无括号)
| 属性 | 说明 |
|---|---|
超时 |
同步 接收 超时毫秒 |
错误信息 |
最近失败原因 |
端口 |
本地绑定端口 |
绑定地址 |
|
是否已启动 / 是否在监听 |
已绑定 |
远程IP / 远程端口 / 远程地址 |
连接 记住的默认对端 |
客户IP / 客户端口 / 客户地址 |
最近一包来源 |
最大包长 |
默认 65507 |
广播允许 |
SO_BROADCAST |
5. 方法摘要
| 方法 | 签名 | 说明 |
|---|---|---|
| 启动 / 监听 | (整数 端口, [文本 绑定="0.0.0.0"]) → 逻辑 |
绑定并异步收包 |
| 停止 / 停止监听 | () |
|
| 关闭 / 重置 | () |
清对端与错误;重置保留事件 |
| 连接 | (文本 主机, 整数 端口) → 逻辑 |
记住默认对端 |
| 发送 | (文本) 或 (主机, 端口, 文本) → 整数 |
1 参走默认对端 |
| 发送到 | (主机, 端口, 文本) |
|
| 发送字节集 / 发送字节集到 | 同理 | |
| 广播 / 广播字节集 | (整数 端口, 文本/字节集) |
发往 255.255.255.255 |
| 接收 / 接收字节集 | () |
同步收一包(会短暂停异步线程) |
| 取远程 / 取客户 | 见属性 |