Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 套接字响应头为两位数的十六进制格式_Swift_Sockets_Hex - Fatal编程技术网

Swift 套接字响应头为两位数的十六进制格式

Swift 套接字响应头为两位数的十六进制格式,swift,sockets,hex,Swift,Sockets,Hex,我有一个TCP套接字连接,试图在其中响应请求消息。我的规范规定,对请求的响应应采用以下格式: 其中,标题包含两位十六进制格式的数据长度。我的响应数据是“202000000000000TEST0\u OK” 由于响应长度为25个字符,因此我假设头是25的十六进制表示,因此为0x19。但是,当发送此消息时,我从正在回复的设备返回一个未知错误 使用BlueSocket库,我使用以下方式发送回复: if(message.contains("00000000000000001")) { repl

我有一个TCP套接字连接,试图在其中响应请求消息。我的规范规定,对请求的响应应采用以下格式:

其中,标题包含两位十六进制格式的数据长度。我的响应数据是
“202000000000000TEST0\u 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)
}
if(message.contains(“0000000000000000 1”)){
回复=“202000000000000TEST0\u正常”
变量头:UInt8=0x19
尝试socket.write(from:Data.init(字节:&头,计数:MemoryLayout.size))
尝试套接字。写入(发件人:回复)
}
不幸的是,我没有任何进一步的错误信息。我很自信我对如何计算和发送标题的理解是不正确的

编辑:我还尝试了以下响应,但都失败了:

  • “25xxxxxxxxxxxxxxxxxxxxxxxx”
    以数据字符串(25)的十进制长度开始
  • “27xxxxxxxxxxxxxxxxxxxxxxxx”
    以数据和标题字符串(27)的整个长度作为前缀
  • “19XXXXXXXXXXXXXXXXXXXXXXXXX”
    前面加上数据字符串长度的十六进制表示(25个字符,因此为0x19)
  • “1BXXXXXXXXXXXXXXXXXXXXXXXXX”
    以十六进制表示的整个数据长度和标题字符串(27个字符,因此为0x1B)作为前缀

可能它需要字符串
“19”
。所以您的回复应该是“reply=”19202000000000test0\u OK“。只是一个猜测。@vacawama-明智的猜测,但不幸的是,那不是它。我编辑了这个问题,以显示我刚才尝试过的类似问题。我一直在问自己,为什么他们不能在文档中提供一个简单的请求/响应示例!!1.你确定你正确阅读了说明书吗?它到底说了什么?2.您的套接字是发送响应的套接字还是发送请求的套接字?可能请求使用不同的格式…?在Wireshark中分析请求后,我注意到请求消息以空字符0x00开头。将此添加到我的响应中就成功了,所以0x00 0x19。。。我已经三次检查了文件,没有提到这一点。一个简单的问题,文档中的一个示例需要2分钟才能发现,而不是2天。