feat: client 包增加 tcp 客户端
This commit is contained in:
parent
124635c72c
commit
a3bb10012e
|
@ -0,0 +1,21 @@
|
|||
package client
|
||||
|
||||
import "net"
|
||||
|
||||
func dial(network string, addr string, runState chan<- error, receive func(wst int, packet []byte), setConn func(conn net.Conn), isClosed func() bool) {
|
||||
c, err := net.Dial(network, addr)
|
||||
if err != nil {
|
||||
runState <- err
|
||||
return
|
||||
}
|
||||
setConn(c)
|
||||
runState <- nil
|
||||
packet := make([]byte, 1024)
|
||||
for !isClosed() {
|
||||
n, readErr := c.Read(packet)
|
||||
if readErr != nil {
|
||||
panic(readErr)
|
||||
}
|
||||
receive(0, packet[:n])
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package client
|
||||
|
||||
import "net"
|
||||
|
||||
func NewTCP(addr string) *Client {
|
||||
return NewClient(&TCP{
|
||||
addr: addr,
|
||||
})
|
||||
}
|
||||
|
||||
type TCP struct {
|
||||
conn net.Conn
|
||||
addr string
|
||||
closed bool
|
||||
}
|
||||
|
||||
func (slf *TCP) Run(runState chan<- error, receive func(wst int, packet []byte)) {
|
||||
dial("tcp", slf.addr, runState, receive, func(conn net.Conn) {
|
||||
slf.conn = conn
|
||||
}, func() bool {
|
||||
return slf.closed
|
||||
})
|
||||
}
|
||||
|
||||
func (slf *TCP) Write(packet *Packet) error {
|
||||
_, err := slf.conn.Write(packet.data)
|
||||
return err
|
||||
}
|
||||
|
||||
func (slf *TCP) Close() {
|
||||
slf.closed = true
|
||||
}
|
||||
|
||||
func (slf *TCP) GetServerAddr() string {
|
||||
return slf.addr
|
||||
}
|
|
@ -17,21 +17,11 @@ type UnixDomainSocket struct {
|
|||
}
|
||||
|
||||
func (slf *UnixDomainSocket) Run(runState chan<- error, receive func(wst int, packet []byte)) {
|
||||
c, err := net.Dial("unix", slf.addr)
|
||||
if err != nil {
|
||||
runState <- err
|
||||
return
|
||||
}
|
||||
slf.conn = c
|
||||
runState <- nil
|
||||
packet := make([]byte, 1024)
|
||||
for !slf.closed {
|
||||
n, readErr := slf.conn.Read(packet)
|
||||
if readErr != nil {
|
||||
panic(readErr)
|
||||
}
|
||||
receive(0, packet[:n])
|
||||
}
|
||||
dial("unix", slf.addr, runState, receive, func(conn net.Conn) {
|
||||
slf.conn = conn
|
||||
}, func() bool {
|
||||
return slf.closed
|
||||
})
|
||||
}
|
||||
|
||||
func (slf *UnixDomainSocket) Write(packet *Packet) error {
|
||||
|
|
Loading…
Reference in New Issue