1.proto
syntax = "proto3";
option go_package = ".;proto";
service Geenter {
rpc ClientPutStream (stream putRequest) returns (putResponse);
}
message putRequest {
string data = 1;
}
message putResponse {
string data = 1;
}
2.server
package main
import (
"fmt"
"grpctest2/stream_grpc/client_put_stream/proto"
"net"
"google.golang.org/grpc"
)
type Server struct{}
func (s *Server) ClientPutStream(clistr proto.Geenter_ClientPutStreamServer) error {
for {
d, err := clistr.Recv()
if err != nil {
return err
}
fmt.Println(d)
}
}
func main() {
g := grpc.NewServer()
proto.RegisterGeenterServer(g, &Server{})
conn, _ := net.Listen("tcp", "127.0.0.1:8080")
g.Serve(conn)
}
3.client
package main
import (
"context"
"grpctest2/stream_grpc/client_put_stream/proto"
"time"
"google.golang.org/grpc"
)
func main() {
conn, _ := grpc.Dial("127.0.0.1:8080", grpc.WithInsecure())
defer conn.Close()
c := proto.NewGeenterClient(conn)
putRes, _ := c.ClientPutStream(context.Background())
i := 0
for {
i++
putRes.Send(&proto.PutRequest{Data: "sss"})
time.Sleep(time.Second)
if i > 10 {
break
}
}
}