刚入门Go,打算做个文件传输相关的小工具巩固相关知识,遇到了一个struct
与 []byte
相互转换(encode、decode) 的问题。
情况描述: 为了实现多文件传输, 判断文件是否传输完成,我自定义了如下的一个结构体作为协议头(我不确定这么描述是否准确)
type FileEntry struct {
FileLen int64 // 文件长度
NameLen int // 文件名长度
Filename []byte // 文件名
}
在socket传输时,我打算按以下流程传输:
发送端
- 读文件,通过相关信息生成文件头
- 将文件头先发送给接收端
- 循环发送文件,直到发送完成
接收端
- 接收协议头
- 循环接收文件本体,根据协议头判断是否读取完成
发送第二个文件重复上述过程(为了解决小文件碎片问题,复用同一个tcp连接)
问题
我不清楚我这样的实现是否正确或优雅,有更好的方法烦请不吝指出。
我现在的问题:
- 发送端发送的时候如何将
struct
转成[]byte
,从而通过tcp发送出去 - 接收端如何解码发送过来的头
我目前的解决办法:
结构体
→ json
→ []byte