TCP 通信用于可靠的长连接数据收发。当前版本支持 TCP 服务端监听和 TCP 客户端连接。
server = net.listen({ type:'tcp', bind:'127.0.0.1:9000', on_connect:fn(client){ println('tcp client:' + client.addr) }, on_message:fn(client, data){ client.write('echo:' + data) }, on_close:fn(client){ println('tcp closed:' + client.addr) }, on_error:fn(err){ println(err) } })
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| type | string | 是 | 无 | 固定为 tcp |
| bind | string | 是 | 无 | 监听地址,格式为 host:port |
| on_connect | fn | 否 | 无 | 客户端连接后调用,参数为 client |
| on_message | fn | 否 | 无 | 收到数据后调用,参数为 client, data |
| on_close | fn | 否 | 无 | 客户端关闭后调用,参数为 client |
| on_error | fn | 否 | 无 | 后台任务出错时调用,参数为 err |
client = net.connect({ type:'tcp', host:'127.0.0.1', port:9000, timeout:3000 }) client.write('hello') println(client.read()) client.close()
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| type | string | 是 | 无 | 固定为 tcp |
| host | string | 是 | 无 | 远端主机名或 IP |
| port | int | 是 | 无 | 远端端口,范围 0..65535 |
| timeout | int | 否 | 0 | 连接、读写超时时间,单位毫秒;大于 0 时生效 |
net.listen({type:'tcp'}) 返回 TcpServer。
| 字段/方法 | 类型 | 说明 |
|---|---|---|
| addr | string | 服务监听地址 |
| type | string | 固定为 tcp |
| close() | fn | 关闭服务,返回 true |
net.connect({type:'tcp'}) 和服务端回调中的 client 都是 TcpClient。
| 字段/方法 | 类型 | 说明 |
|---|---|---|
| addr | string | 远端地址 |
| type | string | 固定为 tcp |
| write(data) | fn | 写入字符串数据,返回写入字节数 |
| send(data) | fn | 等同于 write(data) |
| read() | fn | 读取一段数据,返回字符串 |
| close() | fn | 关闭连接,返回 true |
on_message。
client.read() 单次最多读取内部缓冲区中的一段数据,当前缓冲区大小为 8192 字节。
write() / send() 会把参数转换为字符串后写入。
on_error 时,后台错误会输出到标准错误。