我有一个TCP套接字连接,我正在尝试响应请求消息。我已经说明了对请求的响应应采用以下格式:
其中标头包含两位数的十六进制格式的数据长度。我的回复数据为"202000000000000TEST0_OK "
。
由于响应长度为25个字符,我假设标题将是25的十六进制表示,因此为0x19。但是,在发送此邮件时,我会从我回复的设备中收到未知错误。
使用BlueSocket
库,我使用以下方式发送回复:
if(message.contains("00000000000000001")) {
reply = "202000000000000TEST0_OK "
var header: UInt8 = 0x19
try socket.write(from: Data.init(bytes: &header, count: MemoryLayout<UInt8>.size))
try socket.write(from: reply)
}
不幸的是,我没有任何进一步的错误信息。我很自信我对如何计算和发送标题的理解不正确......
编辑:我还尝试了以下所有失败的回复:
"25XXXXXXXXXXXXXXXXXXXXXXXXX"
从数据字符串的十进制长度开始(25)。"27XXXXXXXXXXXXXXXXXXXXXXXXX"
在数据和标题字符串(27)的整个长度前面添加。"19XXXXXXXXXXXXXXXXXXXXXXXXX"
前面加上数据字符串长度的十六进制表示(25个字符,所以0x19)。"1BXXXXXXXXXXXXXXXXXXXXXXXXX"
前缀为数据和标题字符串的整个长度的十六进制表示形式(27个字符,所以0x1B)。