52 lines
770 B
Go
52 lines
770 B
Go
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))
|
|
}
|
|
}
|