gob流式数据传输和文件传输
基础协议:tcp
利用go语言gob编码格式,在一个TCP连接上同时进行多路流式数据传输和文件传输。
实现代码:https://gitee.com/rocket049/gobstream
引用方法:import "gitee.com/rocket049/gobstream"
一、文件
发送方先发送文件头,指定Session,然后顺序发送数据块;接收方根据文件头Session接收文件。
文件头
struct {
Typ string
Name string
Mode uint32
Session uint32
}
- Typ: 字符串:
file
数据块
struct {
Typ string
Session uint32
Status string
Format string
Data []byte
}
- Status: 空字符串表示正在传输;
end表示结束,此时Format和Data都应该是空。 - Typ:
filedata - Format: raw/gz
- Session:程序根据数据块的 Session 判断对应的文件头
二、数据
根据指定Session,发送数据,可以单独发送数据快,也可以分段发送。
数据头
struct {
Typ string
Status string
Session uint32
Format string
Data []byte
}
- Typ:
streamdata - Status:
start长数据块的第一个;alone单独数据块
数据块
struct {
Typ string
Status string
Session uint32
Format string
Data []byte
}
- Typ:
streamdata - Session: 和数据头一样
- Status: 空字符串
数据尾
struct {
Typ string
Status string
Session uint32
}
- Typ:
streamdata - Status:
end - Session: 和数据头一样
统一数据结构
struct {
Typ string
Session uint32
Status string
Name string
Mode uint32
Format string
Data []byte
Ext uint32
}
- Ext:供程序自定义的扩展信息


