コード例 #1
0
ファイル: server.py プロジェクト: aisondhs/pytcpsrv
    def _handle_read(self, data):
        msgId = struct.unpack(">H",data[0:2])[0]
        length = struct.unpack(">H",data[2:4])[0]
        buffData = data[4:length]
        
        buffNameReq = protolist.protolist(msgId)
        buffNameRsp = protolist.protolist(msgId+1)

        moduleName = msgacts.msgAct[buffNameReq][0]
        className = msgacts.msgAct[buffNameReq][1]
        methodName = msgacts.msgAct[buffNameReq][2]

        proto_module = importlib.import_module('pytcpsrv.proto.'+moduleName+'_pb2')
        classReq = getattr(proto_module,buffNameReq)
        classRsp = getattr(proto_module,buffNameRsp)
        objReq = classReq()
        objRsp = classRsp()
        objReq.ParseFromString(buffData)

        service_module = importlib.import_module('pytcpsrv.service.'+className)
        classSrv = getattr(service_module,className)
        objSrv = classSrv()
        objSrv.bufferReq = objReq
        objSrv.bufferRsp = objRsp
        rspBufferData =  getattr(objSrv, methodName)()
        rspData =  struct.pack(">H",msgId+1)+struct.pack(">H",len(rspBufferData)+4)+rspBufferData+"\n"
        self._stream.write(rspData)
        self._read_line()
コード例 #2
0
ファイル: client.py プロジェクト: aisondhs/pytcpsrv
#! /usr/bin/env python
#coding=utf-8

import importlib
import struct
import socket

from pytcpsrv import protolist

msgId = 1
buffNameReq = protolist.protolist(msgId)

proto_module = importlib.import_module('pytcpsrv.proto.test_pb2')
classReq = getattr(proto_module,buffNameReq)
objReq = classReq()

objReq.uid = 10001
sreialStr = objReq.SerializeToString()
length = len(sreialStr)+4
data = struct.pack(">H",msgId)+struct.pack(">H",length)+sreialStr+"\n"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 8888))

sock.send(data)
res = sock.recv(1024)
msgId = struct.unpack(">H",res[0:2])[0]
length = struct.unpack(">H",res[2:4])[0]
buffData = res[4:length]
buffNameRsp = protolist.protolist(msgId)
classRsp = getattr(proto_module,buffNameRsp)