听
TCP 监听。新连接触发回调。
签名:听(端口, 处理函) 或 听(端口, 处理函, 绑定地址)
- 默认只绑回环
127.0.0.1——只允许本机连接。要让局域网/公网访问,必须显式写地址:听(8000, 处理函, "0.0.0.0")。 - 绑定地址是字符串:IPv4 字面量(
"127.0.0.1"/"0.0.0.0"/"192.168.1.10")或可解析的主机名。 - 地址不可用(端口被占、地址非法、传了非字符串)时
听返回失败结果,错误消息带具体地址与端口;绝不会静默回退成对外监听。 - 参数个数不是 2 或 3 时编译期报错。
xuantie
听(8000, 函(流) {
流.写("欢迎!\n")
})
输("按回车停止...")上面这段只监听本机。要对外提供服务,写成 听(8000, 函(流) { ... }, "0.0.0.0")。
你可以……
- 回显服务器——回调参数就是该连接的流:
xuantie
听(8000, 函(流) {
循 {
设 数据 = 流.读()
若 数据 == 空 { 断 }
流.写("回显: " & 数据)
}
流.关()
})
输("按回车停止...")- 共享数据——回调间是真多线程并发,用全局变量或通道汇总:
xuantie
设 在线 = 0
听(8000, 函(流) {
在线 = 在线 + 1
流.写("当前在线: " & 在线)
在线 = 在线 - 1
流.关()
})
输("按回车停止...")注意
听立即返回、不挡退出:主线程跑到末尾进程就结束了,服务端末尾用输(...)或循 { 时.睡(1000) }留住主线程。- 没有「停止监听」原语:一旦启动就活到进程结束。
- TCP 没有消息边界:一次
读不等于「一条消息」(阻塞路径每次最多 4096 字节),要完整消息自己加分隔符循环拼。