proto文件
syntax = "proto3";
package cus_hash;
service CusHash{
rpc GetCusHash(CusHashReq) returns (CusHashRes) {}
}
message CusHashReq{
string HashType = 1;
string Sessid = 2;
string HashStr = 3;
}
message CusHashRes{
string HashRes = 1;
bool Succ = 2;
}
import grpc
import hash_pb2_grpc, hash_pb2
from concurrent import futures
import time
class HashServicer(hash_pb2_grpc.CusHashServicer):
def GetCusHash(self, request,context):
hash_type = request.HashType
sessid = request.Sessid
hash_str = request.HashStr
HashRes = 'sessionid:{}, hash_str:{}, hash_type:{}'.format(sessid,hash_str,hash_type)
Succ = True
result = {"HashRes":HashRes,"Succ":Succ}
return hash_pb2.CusHashRes(**result)
def serv():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
#hash_pb2_grpc.add_CusHashServicer_to_server(hash_pb2_grpc.CusHashServicer(),server)
hash_pb2_grpc.add_CusHashServicer_to_server(HashServicer(),server)
server.add_insecure_port("[::]:10000")
server.start()
print('server started')
try:
while 1:
time.sleep(24*60*60)
except KeyboardInterrupt:
server.stop(0)
print('server stopped')
serv()
import grpc
import hash_pb2_grpc
import hash_pb2
class HashClient:
def __init__(self):
self.host = 'localhost'
self.port = 10000
self.channel = grpc.insecure_channel('{}:{}'.format(self.host,self.port))
self.stub = hash_pb2_grpc.CusHashStub(self.channel)
def hsh(self,hashtype,sessid,message):
ms = hash_pb2.CusHashReq(HashType=hashtype,Sessid=sessid,HashStr=message)
return self.stub.GetCusHash(ms)
hashtype = 'md5'
sessid = 'sesid'
msg = 'hello'
h = HashClient()
ret = h.hsh(hashtype,sessid,msg)
print(ret)