Files
origin/network/tcpsocketclient.go
boyce 7fd97033ec 1.优化网络库
2.rpc协议在宕机时不会导致整个rpc无法响应
2020-02-05 17:51:51 +08:00

49 lines
782 B
Go

package network
import (
"fmt"
"github.com/golang/protobuf/proto"
"net"
)
type TcpSocketClient struct {
conn net.Conn
addr string
}
func (slf *TcpSocketClient) Connect(addr string) error{
tcpAddr,terr := net.ResolveTCPAddr("tcp",addr)
if terr != nil {
return terr
}
conn,err := net.DialTCP("tcp",nil,tcpAddr)
if err!=nil {
fmt.Println("Client connect error ! " + err.Error())
return err
}
slf.conn = conn
slf.addr = addr
//
return nil
}
func (slf *TcpSocketClient) SendMsg(packtype uint16,message proto.Message) error{
if slf.conn == nil {
return fmt.Errorf("cannt connect %s",slf.addr)
}
var msg MsgBasePack
data,err := proto.Marshal(message)
if err != nil {
return err
}
msg.Make(packtype,data)
slf.conn.Write(msg.Bytes())
return nil
}