新TAP测试(TODO 解析arp)

This commit is contained in:
黄思敏 2022-09-01 16:15:02 +08:00
parent 8fa6a1bf96
commit 81aa28f1cb
3 changed files with 34 additions and 27 deletions

View File

@ -208,7 +208,8 @@ func (nt *NetTunnel) SendFrames(stream gen.FrameService_SendFramesServer) error
if err != nil {
log.Panic(err)
}
nt.writer <- request.GetFrames()
nt.writer <- Decompress(request.GetFrames())
// frames := Decompress(request.GetFrames())
// if len(frames) > 0 {

View File

@ -1,6 +1,7 @@
package main
import (
"bytes"
"context"
"log"
gen "slimming/proto/gen"
@ -101,7 +102,7 @@ func (cli *RPCClient) run() {
// var ticker = time.NewTicker(time.Millisecond * 1)
// buf := bytes.NewBuffer(nil)
buffer := bytes.NewBuffer(nil)
for buf := range cli.Frames {
// select {
@ -130,9 +131,11 @@ func (cli *RPCClient) run() {
// continue
// }
Compress(buffer, buf)
// 发到对面的网卡
err = stream.Send(&gen.RequestFrames{
Frames: buf,
Frames: buffer.Bytes(),
})
if err != nil {
log.Panic(err)

View File

@ -3,49 +3,52 @@ package main
import (
"bytes"
"encoding/binary"
"encoding/gob"
"io"
"log"
"net"
"github.com/klauspost/compress/zstd"
)
func Compress(writer io.Writer, data [][]byte) {
func Compress(writer io.Writer, data []byte) {
// encode gob
enc := gob.NewEncoder(writer)
err := enc.Encode(data)
if err != nil {
log.Panic(err)
}
// zstd compress
// zenc, err := zstd.NewWriter(writer)
// enc := gob.NewEncoder(writer)
// err := enc.Encode(data)
// if err != nil {
// log.Panic(err)
// }
// err = zenc.Flush()
// if err != nil {
// log.Println(err)
// }
// zstd compress
zenc, err := zstd.NewWriter(writer)
if err != nil {
log.Panic(err)
}
zenc.Write(data)
err = zenc.Flush()
if err != nil {
log.Println(err)
}
}
func Decompress(data []byte) (frames [][]byte) {
func Decompress(data []byte) (frames []byte) {
var err error
var buf = bytes.NewBuffer(data)
// var zdec *zstd.Decoder
// zdec, err = zstd.NewReader(buf)
// if err != nil {
// log.Panic(err)
// }
// zdec.Close()
dec := gob.NewDecoder(buf)
err = dec.Decode(&frames)
var zdec *zstd.Decoder
zdec, err = zstd.NewReader(buf)
if err != nil {
log.Panic(err)
}
zdec.Close()
frames = buf.Bytes()
// dec := gob.NewDecoder(buf)
// err = dec.Decode(&frames)
// if err != nil {
// log.Panic(err)
// }
return
}