msg.proto
syntax = "proto3";
package MSG;
option go_package = ".;MSG";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
}
//protoc --go_out=./ ./msg.proto
//protoc --cpp_out=./ ./msg.proto
- func Marshal(m Message) ([]byte, error)
- func Unmarshal(b []byte, m Message) error
- type Message = protoreflect.ProtoMessage
- type ProtoMessage interface{ ProtoReflect() Message }
go_server.go
/*
func (m selfMarshaler) Marshal() ([]byte, error)
func (m *selfMarshaler) Unmarshal(b []byte) error
*/
package main
import (
"MSG"
"fmt"
//"github.com/golang/protobuf/proto"
"net"
"os"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
)
func main() {
serve, err := net.Listen("tcp", "127.0.0.1:9999")
if err != nil {
fmt.Println("Error: %s", err.Error())
os.Exit(1)
}
fmt.Println("listen on 127.0.0.1:9999")
for {
conn, err := serve.Accept() // 建立连接
if err != nil {
fmt.Println("accept failed, err:", err)
continue
}
fmt.Printf("new client %s %d\n", conn.RemoteAddr().(*net.TCPAddr).IP,
conn.RemoteAddr().(*net.TCPAddr)