2014-09-02 229 views
3

有人能幫助我嗎?Python:發送請求到protobuf服務器

我有一個.proto文件。

如何從客戶端發送和打印請求到套接字服務器? 如何對客戶做出迴應?

protofile:

option optimize_for = SPEED; 
option java_package = "org.epicsquad.protofile.proto"; 

package protofile.proto; 

enum CommandTypeEnum { 

COMMAND_one = 0; 
COMMAND_two = 1; 
COMMAND_three = 2; 

} 

enum ResultTypeEnum { 

RESULT_ONE = 0; 
RESULT_TWO = 1; 

message Result { 

required uint32 result_one = 1; 
optional string result_two = 2; 

} 

message Request { 

optional string req1 = 1; 
optional string req2 = 2; 

} 

message Response { 

required string resp1 = 1; 
required string resp2 = 2; 

} 

服務器:

import sys 
sys.path.append('../../main') 
import protobuf.socketrpc.server as server 
server = server.SocketRpcServer(8090) 
print 'Serving on port 8090' 
server.run() 

客戶端:

import sys 
sys.path.append('../../main') 
import protofile_pb2 
from protobuf.socketrpc import RpcService 
import logging 
log = logging.getLogger(__name__) 
logging.basicConfig(level=logging.DEBUG) 
hostname = 'localhost' 
port = 8090 
request = protofile_pb2.Request() 

我有一個HelloWorld示例,但有發送請求通過服務去。但是我的.protofile中沒有服務消息。 謝謝!!!

回答

0

add option py_generic_services = true;這行是你的.proto文件。 如果您不這樣做,protoc不會生成您需要的存根(stub)rpc