feat: client 包增加 tcp 客户端

This commit is contained in:
kercylan98 2023-08-24 12:19:06 +08:00
parent 124635c72c
commit a3bb10012e
3 changed files with 62 additions and 15 deletions

21
server/client/generic.go Normal file
View File

@ -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])
}
}

36
server/client/tcp.go Normal file
View File

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

View File

@ -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 {