1 回答
TA贡献1816条经验 获得超6个赞
正如您在评论中提到的,HTTP 不是必需的。
在这种情况下,为了寻找最快的传输解决方案,我将完全放弃 HTTP 传输层,只使用普通 (TCP) 套接字连接,因为 HTTP 仅传输几个字节就会产生相当大的开销。
定义您自己的协议(这可能非常简单),打开与服务器的 TCP 连接,并根据您的要求每隔几秒左右发送一次数据包。
您发送(和接收)数据的协议可以很简单:
进行可选的身份验证或客户端/服务器识别(以确保您连接到您想要的服务器/程序)。
使用
encoding/gob
标准库中的packgae 通过连接以二进制形式发送数据。
所以基本上分析程序(客户端)应该打开TCP连接,并使用gob.NewEncoder()
包装连接来发送数据。服务器应接受传入的 TCP 连接并用于gob.NewDecoder()
包装连接以接收数据。
客户端调用Encoder.Encode()
所以发送分析信息,它通常可以是一个结构值。服务器调用Decoder.Decode()
以接收分析信息,即客户端发送的结构。就这样。
使用encoding/gob
包以二进制形式发送数据要求您使用相同的类型来描述双方的分析数据。如果您想要更大的灵活性,您还可以使用该encoding/json
包将分析信息作为 JSON 文本发送/接收。缺点是 JSON 需要发送更多数据,并且与二进制表示相比,生成和解析 JSON 文本需要更多时间。
如果丢失一些分析数据包(或接收重复数据)不是问题,您可能想要尝试/实验使用 UDP 而不是 TCP,这可能会更有效。
- 1 回答
- 0 关注
- 205 浏览
添加回答
举报