server和client通過grpc建立連線

2021-10-25 05:52:35 字數 2095 閱讀 7600

一、檔案結構

server端和client端分布在兩個不同的集群裡,可以通過下發mq訊息,或者grpc連線傳遞訊息,這裡介紹通過grpc建立連線,第一步是建立proto檔案,要傳遞的方法和變數都在這裡定義

senddata/

├── data.proto

└── log

二、建立data.proto檔案

注意,如果server端和client端不在同一集群,兩邊都要建立proto檔案

syntax =

"proto3"

;//指定protobuf的版本

package senddata;

//宣告乙個包名,一般與檔案目錄名相同

// service裡定義建立連線的方法sayhello

service connect

}// 定義傳遞結構體

message hellorequest

message data

message helloreply

執行:protoc --go_out=plugins=grpc:. data.proto

執行完畢後目錄結構

senddata/

├── data.proto

├── data.pb.go

└── log

三、建立client.go

package main

import

("log"

"os"

pb "amber/senddata"

"golang.org/x/net/context"

"google.golang.org/grpc"

)const

( address =

"localhost:50001"

)func

main()

defer conn.

close()

//一定不忘忘記關閉連線

c := pb.

newconnectclient

(conn)

if c==

nil//生成的pb.go裡的結構體可以被外部引用

data:=

&pb.data

resp, err := c.

sayhello

(context.

background()

,&pb.hellorequest

)if err !=

nil//列印helloreply裡message的內容

log.

println

(resp.message)

}

四、建立server.go
package main

import

("log"

"net"

pb "amber/senddata"

"google.golang.org/grpc"

"golang.org/x/net/context"

)const

( port =

":50001"

)type server struct

//定義空結構體,關聯server服務

// 重寫sayhello方法

func

(s *server)

sayhello

(ctx context.context, in *pb.hellorequest)

(*pb.helloreply,

error),

nil}

func

main()

s := grpc.

newserver()

pb.registerconnectserver

(s,&server

)//註冊服務到grpc的sever端,registerconnectserver是proto裡service生成

log.

println

("rpc服務已經開啟"

) s.

serve

(lis)

//建立連線,開始服務

}

簡單的server和client模型

本 主要有一下幾個技術的解決方案 埠復用技術 防止tcp流協議粘包 我們使用的是指定buf大小的方式 include include include include include include include include include define err exit m do while ...

最簡單client和server通訊程式

開兩個vc或者建兩個工程,先執行server再執行client server端 include include pragma comment lib,ws2 32.lib void main else socket sersocket socket af inet,sock stream,0 建立了...

scroll offset和client如何區分

title 比較 1.clientx與clienty window.nl ad function oevent.clientx是指滑鼠到可視區左邊框的距離。oevent.clienty是指滑鼠到可視區上邊框的距離。2.offsetwidth offsetheight offsetleft和offse...