dissertation-1-language-tests/go/main.go
2020-12-28 11:46:40 +00:00

49 lines
685 B
Go

package main
import (
"fmt"
"github.com/pkg/taptun"
"os"
"os/signal"
"syscall"
)
type Packet struct {
Data []byte
}
func main() {
tun, err := taptun.NewTun("nc%d")
if err != nil { panic(err) }
inboundPackets := make(chan Packet, 128)
go func() {
bufferSize := 1500
buffer := make([]byte, bufferSize)
for {
read, err := tun.Read(buffer)
if err != nil { panic(err) }
if read == 0 { panic("0 bytes read!") }
p := Packet{}
p.Data = make([]byte, read)
copy(p.Data, buffer)
inboundPackets <- p
}
}()
for i := 0; i < 10; i++ {
i := i
go func() {
for {
p := <-inboundPackets
fmt.Printf("Reader %d: %v\n", i, p)
}
}()
}
}