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 } } }