remote-mic/connection/connect.go

52 lines
853 B
Go

package connection
import (
"net"
"fmt"
)
func NewConnect(address string) (*Connection, error) {
conn, err := connectTCP(address)
if err != nil {
return nil, err
}
return &Connection{
conn: conn,
BufSize: defaultBufSize,
stopFlag: false,
}, nil
}
func connectTCP(address string) (*net.TCPConn, error) {
addr, err := net.ResolveTCPAddr("tcp", address)
if err != nil {
return nil, err
}
conn, err := net.DialTCP("tcp", nil, addr)
if err != nil {
return nil, err
}
return conn, nil
}
func (c *Connection) SendChan() (chan<- []byte) {
c.dataChan = make(chan []byte)
go c.sendLoop()
return c.dataChan
}
func (c *Connection) sendLoop() {
for !c.stopFlag {
data, open := <- c.dataChan
if !open {
c.stopFlag = true
}
_, err := c.conn.Write(data)
if err != nil {
fmt.Println(err)
c.stopFlag = true
}
}
}