Initial prototyping hackery.

This commit is contained in:
2020-04-28 23:42:45 +02:00
commit d6f9ac7138
4 changed files with 123 additions and 0 deletions

51
socketops/socketops.go Normal file
View File

@ -0,0 +1,51 @@
package socketops
import (
"fmt"
"net"
)
const bufSize = 1024
func AcceptConn(connstr string) (net.Conn, error) {
addr, err := net.ResolveTCPAddr("tcp", connstr)
if err != nil {
return nil, err
}
sock, err := net.ListenTCP("tcp", addr)
if err != nil {
return nil, err
}
conn, err := sock.AcceptTCP()
if err != nil {
return nil, err
}
conn.SetNoDelay(true)
return conn, nil
}
func HandleConn(conn net.Conn, out chan<- []byte) {
buf := make([]byte, bufSize)
for {
n, err := conn.Read(buf)
if err != nil {
close(out)
break
}
if n > 0 {
out <- buf[:n]
fmt.Printf("Bytes read: %d\n", n)
}
}
}
func HandleData(data <-chan []byte) {
for {
buf, open := <-data
if !open {
break
}
fmt.Printf("%v\n", string(buf))
}
}