Multithreaded Download Accelerator With Resume Support
Issue with existing file transfer protocol .
When a computer tries to transfer files over the network with another computer, typically it establishes a single connection with the server and transfers the files sequentially over this connection. This slows down the speed of data transfer and does not utilize the available bandwidth effectively.
Solution :
Using muti-threading it is possible for several threads to connect to the server independently over different sockets and transfer either different files simultaneously or different portions of a single file simultaneously.
Also when data transfer with a system is terminated abruptly, generally the entire download operation needs to be re-instantiated from scratch again. This can be eliminated if the data transfer package can maintain the status of download for every file downloaded with resume support at the server side, thereby ensuring that the download can resume from the point of disconnection rather than all over from the beginning.
The main objectives of Multithreaded Downloaded Accelerator with Resume Support are:
When a computer tries to transfer files over the network with another computer, typically it establishes a single connection with the server and transfers the files sequentially over this connection. This slows down the speed of data transfer and does not utilize the available bandwidth effectively.
Solution :
Using muti-threading it is possible for several threads to connect to the server independently over different sockets and transfer either different files simultaneously or different portions of a single file simultaneously.
Also when data transfer with a system is terminated abruptly, generally the entire download operation needs to be re-instantiated from scratch again. This can be eliminated if the data transfer package can maintain the status of download for every file downloaded with resume support at the server side, thereby ensuring that the download can resume from the point of disconnection rather than all over from the beginning.
The main objectives of Multithreaded Downloaded Accelerator with Resume Support are:
- To develop a server that can support file transfer transactions, with resume support
- To develop a client that can provide an attractive graphical user interface to the user and help the user connect to specific systems and transfer files. Furthermore, the client must be able to maintain the status of all downloads.
- To develop a protocol that ensures that the client can communicate with the server.
- To incorporate multi-threading in order to improve bandwidth utilization, with proper communication amongst threads so that there is no synchronization problems or race conditions.
- To introduce resume support by incorporating CRC checks, so
that incomplete downloads can be resumed from the point where it was left off.
Linux Shell
This project is a custom implementation of "Linux Shell" which enhances the basic functionalities provided by default Linux shells like Bourne, Korn, C, and Bash. This custom implementation of Linux shell is able to run executable statements with command line arguments.
This shell is an intermediary program interpreter, which interprets the commands that are entered at the terminal, and translates them into commands that are understood by the kernel. Myshell, thus acts as the blanket around the kernel and eliminates the need for the programmer to communicate directly with the kernel.
A unique feature of the Linux operating system is that all Linux commands exist as utility programs. These programs are located in individual files in one of the systems directories, such as /bin, /etc, or /usr/bin. The shell can be considered a master utility program, which enables a user to gain access to all the other utilities and resources of the computer.
The shell reads the first word of a command line and tries to identify if it is an alias, a function, or an internal command. If there is a command to be executed, the shell then searches through the directories specified in the path for the command files, and executes the command.
How does it work ?
- Searches for and locates the file with that name in the directories containing utilities,
- Loads the utility into memory and,
- executes the utility.
This shell is an intermediary program interpreter, which interprets the commands that are entered at the terminal, and translates them into commands that are understood by the kernel. Myshell, thus acts as the blanket around the kernel and eliminates the need for the programmer to communicate directly with the kernel.
A unique feature of the Linux operating system is that all Linux commands exist as utility programs. These programs are located in individual files in one of the systems directories, such as /bin, /etc, or /usr/bin. The shell can be considered a master utility program, which enables a user to gain access to all the other utilities and resources of the computer.
The shell reads the first word of a command line and tries to identify if it is an alias, a function, or an internal command. If there is a command to be executed, the shell then searches through the directories specified in the path for the command files, and executes the command.
How does it work ?
- On logging into the terminal , the custom shell displays the Linux prompt indicating that it is ready to receive command from the user.
- The user issues a command, for example: ls <directory-name>
- The custom shell then,
- Searches for and locates the file with that name in the directories containing utilities,
- Loads the utility into memory and,
- executes the utility.
- After the execution is complete, the shell once again displays the prompt, conveying that it is ready for the next command.
Graphics Editor
Graphics editor is a software, which enables the user to carry out graphical operations like drawing geometrical figures and text. The current project "Graphics Editor" is developed completely in "C" programming language. Various geometrical shapes that can be drawn using this editor are "Rectangle, Circle, Ellipse, line, Spiral" etc. This editor also provides provisions for transformations of the geometrical figures. Various other functions like "save, Load, Clip, Rotate, Scale" etc, are also provided.
The project is basically mouse driven with the different functions represented as icons. The GUI made is very user friendly any one can easily use the editor without any learning prerequisites. Also I have provided different colors that can be applied to geometrical figures and also we have different patterns that can be used to fill "Rectangle" , "Circle" etc.
The project is basically mouse driven with the different functions represented as icons. The GUI made is very user friendly any one can easily use the editor without any learning prerequisites. Also I have provided different colors that can be applied to geometrical figures and also we have different patterns that can be used to fill "Rectangle" , "Circle" etc.
Lex Yaac
This project, involved understanding and modifying the existing implementations of Lexical analyzer, and YAAC parser to implement a custom interpreter on UNIX system. The project enables a user to specify customized "Patterns" to generate various "Tokens" through Lexical Analyzer.
Further these "Tokens" were fed to customized implementation of "YAAC" parser which enables user to specify "Grammar" to suit according the requirements of custom interpreter.
Further these "Tokens" were fed to customized implementation of "YAAC" parser which enables user to specify "Grammar" to suit according the requirements of custom interpreter.