Golang通过TL发送二进制编码数据

2024-06-10 12:59:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我对果郎和这种低级的东西还不熟悉,所以也许我只是想错了方向。在

我的项目是一个小型的golang监控客户端,它通过加密的TLS连接发送一些ping消息(当前日期)(这只是为了学习目的)。 python服务器和客户机目前运行良好。在

(python)服务器和客户端将数据打包如下:

[...]
def _send_msg(self, msg):
    msg = struct.pack('>I', len(msg)) + bytes(msg, 'UTF-8')
    self.client.send(msg)

def _recv_msg(self):
    raw_msglen = self.client.recv(4)
    if not raw_msglen:
        return ""
    msglen = struct.unpack('>I', raw_msglen)[0]
    return self._recvall(msglen)
[...]

在移动端,我将数据打包如下:

^{pr2}$

下面是我使用的golang客户端测试代码:http://pastebin.com/dr1mJZ9Y 以及相应的终端输出:http://pastebin.com/mrctJPs5

奇怪的是,登录消息(包括服务器响应)都被正确地发送(和接收),但第二次我尝试发送ping时如下所示:

tlsConn.Write(pack("ping 0000-00-00 00:00:00"))

消息似乎没有到达服务器,没有响应消息被发送回客户端。在

数据包数据的二进制编码和长度前缀是否有错误?在

我知道代码看起来有点混乱,不太符合习惯用法,很抱歉。 再次提前感谢您的帮助!在

软件依赖性/环境:

  • Python 3.4
  • Golang 1.5.3(amd64 Linux)
  • 无第三方LIB

Tags: 数据self服务器clientsend消息客户端raw