def fileReceiver(): serverSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) serverSocket.bind(('', 10080)) Pbuf = MyPacket.PacketBuffer(0) rhandler = MyPacket.RecvHandler(Pbuf, serverSocket) rhandler.recv(writePkt, writeAck, writeEnd, 2048) rhandler.write()
def fileSender(recvAddr, windowSize, srcFilename, dstFilename): clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) clientSocket.connect((recvAddr, 10080)) logfile = open(dstFilename + '_sending_log.txt', 'w') Pbuf = MyPacket.PacketBuffer(windowSize) shandler = MyPacket.SendHandler(Pbuf, clientSocket, logfile) thSend = Thread(target=shandler.sendto, args=((recvAddr, 10080), writePkt)) thAck = Thread(target=shandler.check_acked, args=(writeAck, )) thTimer = Thread(target=shandler.timer, args=(writeAck, writeEnd)) firstpacket = MyPacket.Packet((dstFilename + ':' + shandler.myaddr[0] + ';' + str(shandler.myaddr[1])).encode(), False, 0) shandler.buf.append(firstpacket) filedata = open(srcFilename, 'rb') ackNum = 1 retdata = None while True: retdata = filedata.read(1024) if not retdata: shandler.buf[-1].end = True break shandler.buf.append(MyPacket.Packet(retdata, False, ackNum)) ackNum += 1 filedata.close() thSend.start() thAck.start() thTimer.start() thSend.join() thAck.join() thTimer.join() i = 0 totalRTT = 0 length = shandler.length print("[SENDER] goodput : %f, avgRTT : %f" % (shandler.goodput, shandler.avgRTT)) writeEnd(logfile, shandler.goodput, shandler.avgRTT * 1000) logfile.close() clientSocket.close()