Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A Ruby implementation of the Unreliable Network Simulator for Dr. Shaneck’s reliable data transfer protocol project for CSCI 355 at Liberty University.
Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
.gitignore
.rvmrc
ASSIGNMENT
LICENSE
README.rdoc
unreliable.rb

README.rdoc

Unreliable Network Simulator (Ruby)

Author

Benjamin Manns (benmanns@gmail.com)

Copyright

Copyright 2011 Benjamin Manns

License

Distributed under the MIT License, see LICENSE.

This is a Ruby implementation of the Unreliable Network Simulator for Dr. Shaneck's reliable data transfer protocol project for CSCI 355 at Liberty University.

Note: This library uses global variables to match the original implementation. These are accessible via

$bidirectional

Boolean holds the flag which specifies if traffic is bidirectional

$corruption

Float holds the chance of single byte or single flag corruption (0 <= $corruption <= 1)

$loss

Float holds the chance of packet loss (0 <= $loss <= 1)

$delay

Fixnum holds the simulated average delay between packets

$current_time

Fixnum holds the simulated time

You will have access to the following methods for sending and receiving data

a_udt_send packet

Sends packet of class Packet via a unreliably.

b_udt_send packet

Sends packet of class Packet via b unreliably.

a_start_timer timeout

Starts a timer in a with timeout of class Fixnum.

b_start_timer timeout

Starts a timer in b with timeout of class Fixnum.

a_to_layer_five message

Sends a message from a to the application (stdout).

b_to_layer_five message

Sends a message from b to the application (stdout).

a_stop_timer

Stops the timer in a.

b_stop_timer

Stops the timer in b.

See unreliable.rb for a demo application running an unreliable data transfer algorithm. The basic process for using this library is:

  1. Extract the library (specifically the lib/ folder) to your project directory.

  2. Insert the following to your project file.

    $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
    require 'network_simulator'
    
    include NetworkSimulator
  3. Insert the following to the end of your file.

    NetworkSimulator::Main.run!
Something went wrong with that request. Please try again.