diff --git a/src/client.py b/src/client.py --- a/src/client.py +++ b/src/client.py @@ -40,11 +40,12 @@ class Client: with Connection() as (incoming,outcoming): jsonData={"command":"init", "blockSize":localTree.BLOCK_SIZE, "blockCount":localTree.leafCount, "version":conf.version} outcoming.writeMsg(jsonData) + jsonData,binData=incoming.readMsg() + assert jsonData["command"]=="ack" - # determine which blocks to send - print(datetime.now(), "negotiating:") - while len(nodeStack)>0: - with Connection() as (incoming,outcoming): + # determine which blocks to send + print(datetime.now(), "negotiating:") + while len(nodeStack)>0: i=nodeStack.pop() outcoming.writeMsg({"command":"req", "index":i}) @@ -69,8 +70,8 @@ class Client: i1=-1 print(datetime.now(), "sending data:") - for (k,i2) in enumerate(blocksToTransfer): - with Connection() as (incoming,outcoming): + with Connection() as (incoming,outcoming): + for (k,i2) in enumerate(blocksToTransfer): jsonData={"command":"send", "index":i2, "dataType":"data"} if i1+1!=i2: dataFile.seek(i2*HashTree.BLOCK_SIZE) @@ -79,12 +80,14 @@ class Client: log.info("block #{0}: {1}...{2}".format(i2,binData[:5],binData[-5:])) outcoming.writeMsg(jsonData,binData) - i1=i2 - progress(k,len(blocksToTransfer)) + jsonData,binData=incoming.readMsg() + assert jsonData["command"]=="ack" and jsonData["index"]==i2, jsonData + i1=i2 + progress(k,len(blocksToTransfer)) print("100%") with Connection() as (incoming,outcoming): outcoming.writeMsg({"command":"end"}) - log.info(datetime.now(), "closing session...") + log.info("closing session...") dataFile.close()