TCPServer TCP服务器扩展
介绍
此扩展使 TCP 客户端能够与另一台 Android 设备建立连接,并通过 TCP 逐行交换文本消息。消息以行分隔符(CR、LF 或 CRLF)结束。服务器接受客户端连接,一旦建立连接就可以进行双向数据传输。

主要功能
- 在 Android 设备上创建 TCP 服务器
- 接受多个客户端连接
- 支持双向文本消息传输
- 支持多种字符编码(US-ASCII、UTF-8、ISO-8859-1、UTF-16等)
- 支持行分隔符配置
下载
.aix拓展文件:
de.ullisroboterseite.ursai2tcpserver.aix
.aia示例文件:
版本历史
| 版本 | 日期 | 修改内容 |
|---|---|---|
| 1.0 | 2021-04-15 | 初始版本 |
| 1.1 | 2024-01-14 | 添加 StopClient() 方法 |
截图
应用界面

详细截图

参考
属性 Properties
- 已连接客户端数 ConnectedClients
- 返回当前已连接的客户端数量。
- 回车换行延迟 CrLfDelay
- 数据传输和行终止符之间的延迟时间(毫秒)。默认值:200ms。
- 忽略测试字符 IgnoreTestChar
- TestConnection 期间要忽略的字符代码。默认值:6(ACK)。
- IO超时 IoTimeout
- I/O 操作的超时时间(毫秒)。默认值:1000ms。
- 是否运行中 IsRunning
- 返回服务器的运行状态。
- 行分隔符为CRLF LineDelimiterCrLf
- 设置行分隔符类型。true = CRLF (0x0D+0x0A),false = LF (0x0A)。
- 本地主机 LocalHost
- 返回服务器的本地 IP 地址。
- 本地端口 LocalPort
- 用于接受客户端连接的端口号。
- 网卡列表 NICList
- 返回所有已配置的 IPv4 网络接口地址列表。
- 字符集 Charset
- 字符编码设置。可选值:US-ASCII、UTF-8、ISO-8859-1、UTF-16BE、UTF-16BL、UTF-16。
- 字符集US-ASCII Charset_USASCII
- US-ASCII 字符集常量。
- 字符集UTF-8 Charset_UTF8
- UTF-8 字符集常量。
- 字符集ISO-Latin-1 Charset_ISO_Latin_1
- ISO-8859-1 字符集常量。
- 字符集UTF-16BE Charset_UTF16BE
- UTF-16BE 字符集常量。
- 字符集UTF-16BL Charset_UTF16BL
- UTF-16BL 字符集常量。
- 字符集UTF-16 Charset_UTF16
- UTF-16 字符集常量。
- 最后操作 LastAction
- 返回最后执行的操作描述(例如 “Start”)。
- 最后错误代码 LastErrorCode
- 返回最近一次错误的错误代码。
- 最后错误消息 LastErrorMessage
- 返回错误描述文本。
- 最后异常原因 LastExceptionCause
- 返回触发错误的 Java 异常文本。
方法 Methods
- 启动 Start()
- 启动服务器。如果服务器已在运行,将重新启动。
- 停止 Stop()
- 终止服务器操作。
- 获取客户端ID列表 GetClientIDs()
- 返回所有已连接客户端 ID 的列表。
- 停止客户端 StopClient(客户端ID)
- 断开指定客户端的连接。
- 写入 Write(客户端ID, 消息)
- 为指定客户端缓冲文本,不保证立即传输。
- 写入行 Writeln(客户端ID, 消息)
- 缓冲文本,附加行分隔符,并强制传输。
- 测试连接 TestConnection(客户端ID, 延迟)
- 通过发送两次测试字符(带指定延迟)来验证连接状态。延迟单位为毫秒。
事件 Events
- 服务器已启动 ServerStarted()
- 当服务器成功启动时触发。
- 服务器已停止 ServerStopped(错误代码)
- 当服务器停止时触发。如果 ErrorCode > 0,表示由于错误而停止。
- 客户端已连接 ClientConnected(客户端ID, 客户端IP)
- 当新客户端连接时触发。
- 客户端已断开 ClientDisconnected(客户端ID, 客户端IP)
- 当客户端断开连接时触发。
- 收到消息 MessageReceived(客户端ID, 消息)
- 当从客户端收到以行分隔符结尾的消息时触发。
- 发生错误 ErrorOccurred(操作名称, 错误代码, 错误消息)
- 当操作期间发生错误时触发。
使用示例
示例项目功能
“URS TCP Server Test” 应用程序演示了以下功能:
- 创建一个监听端口 8083 的 TCP 服务器
- 接受客户端连接
- 从客户端接收文本消息
- 以 “Echo “ 前缀加收到的文本作为响应
- 可通过 UrsAI2TcpClient 扩展进行测试
基本用法
- 在设计器中添加 TCPServer 组件
- 设置 LocalPort 属性(例如 8083)
- 在屏幕初始化时调用 Start() 方法启动服务器
- 使用 MessageReceived 事件处理收到的消息
- 使用 Writeln() 方法向客户端发送响应
代码示例
当 Screen1.Initialize 时
调用 TCPServer1.Start
当 TCPServer1.ServerStarted 时
设置 Label1.Text 为 "服务器已启动"
当 TCPServer1.ClientConnected 时
设置 Label1.Text 为 连接("客户端已连接: ", 获取 客户端IP)
当 TCPServer1.MessageReceived 时
调用 TCPServer1.Writeln
客户端ID = 获取 客户端ID
消息 = 连接("Echo ", 获取 消息)
当 TCPServer1.ErrorOccurred 时
设置 Label1.Text 为 获取 错误消息
注意事项
- 端口设置:确保所选端口未被其他应用程序占用
- 网络权限:应用程序需要 INTERNET 权限才能使用此扩展
- 防火墙:确保设备的防火墙允许指定端口的入站连接
- 客户端ID:每个连接的客户端都有唯一的 ID,用于标识和通信
- 字符编码:发送方和接收方应使用相同的字符编码
错误代码
常见错误代码说明:
| 错误代码 | 说明 |
|---|---|
| 0 | 无错误 |
| > 0 | 发生错误,查看 LastErrorMessage 获取详细信息 |
原文链接
原版文档:Ullis Roboter Seite - AI2 TCP Server
作者:Urs (Ullis Roboter Seite)
扫码添加客服咨询