Python tcp socket,如何从异步服务器获取数据

时间:2015-03-05 10:16:35

标签: python tcpclient python-sockets

我之前从未做过python编程,所以我希望你们能在我的代码中给我一些反馈。

我有一个节点js tcp服务器,必须接收一个json“request”对象,然后异步响应其他几个json对象。

我需要python一个接一个地读取所有json,然后返回回调,直到服务器发送一个表示响应“结束”的对象。

我是否正确地做到了?

def requestServer(onData, options={}):
    opts = {'command': 'request'}
    socket = connect()
    opts.update(options)
    socket.send(json.dumps(opts)) # send the json request to the server

    while(True):
        data = socket.recv(1024*5) #reads back any response

        if(data):
            data = json.loads(data)
            if('responseType' in data and data['responseType'] == 'end'):
                break # end of response
            else:
                onData(data)

        time.sleep(0.1)

    socket.close()

def connect():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1', 8888))
    return s

然后我可以像这样使用它:

def onData(data):
   print("Data received from server: ")
   print(data)

requestServer(onData, {'some': 'options'})

0 个答案:

没有答案