Giter VIP home page Giter VIP logo

udpfiletransfer's Introduction

UDP file transfer

It measures performance udp file transmission with CRC.

Used Technologies

C++, Visual Studio

Description

From Glenn Fiedler’s code, we utilized the reliable UDP which controls the missing packets and transmission speed control, however it didn’t have the algorithm to check whether the received data is complete or not. Main purpose of this assignment is to add the algorithm which checks and ensures the integrity of a file through the transmit/receive loop.

To complete this assignment, the client application adds the CRC algorithm to verify packets sent to the server. The server unpacks the CRC code and runs the CRC algorithm with received data to compare the sent and received CRC values. If the local CRC value is different with the received CRC value, the server drops the packet on our layer, and re-sends that packet utilizing Glenn Fiedler’s algorithm.

Testing Method

We tested our application between two remote desktops in 2A213 lab (also desktops and laptop in 2A213) inside Conestoga College Doon campus. We sent different size text or word files among them.

Tools’ specification: * Desktop: Intel Core i5-4590 CPU (3.30GHz), 8 GB RAM, Windows 7 (64bit) * Laptop: Surface Pro 3 i5-4300 (2.9GHz), 8 GB RAM, Windows 10 (64bit)

Results

The overhead created by Glen Fiedler’s code and our own code is significant and is noticeable compared to our assignment 01 results which did not verify or check file integrity. Over 1MB files appear to take too much time.

Test procedure

When we run the client side, it creates packets out of the file selected and adds our own header which includes a “order value”, “file size value”, “the actual data”, and the “crc” value of the complete data including our header. The server receives the packets and dismantles the header accordingly and re-checks the CRC value. If incomplete data is detected based on the CRC values not matching the server drops that packet and asks to re-send the packet. Fiedler’s algorithm didn’t take care of the redundancy of data. To finish the transmission, the server sends back the acknowelegement packet to the client when the server gets the last packet and waits for 20 packets to make sure it didn’t just miss data and that the transmission is complete.

Comparison to windows explorer

The transmission time with windows explorer is much faster than our complete code at transmitting files.

References

Screen Shot

Installation

Windows:

Usage example

Development setup

udpfiletransfer's People

Contributors

gygil avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.