Client Server FTP application using Socket Programming
Any feedback will be highly be appreciated
This project was create as an exercise to improve JavaFX and Socket Programming in general.
Application is built on the client server architecture, user can have the listed functionality, all responses come from the server and is displayed to the user. Sign up, and login functionality is achieved using a simple text file, which is read for signing-in and updated when signing-up
It has the following functionality:
The question for this application:
The purpose of this project is to introduce you to the socket programming and construction of networked applications.
You will learn about programming with sockets by implementing a somewhat modified version of the File Transfer Protocol (FTP) for transferring files between two machines. You will implement two programs; a server that listens for incoming connections and provides read and write access to a directory of files, and a client that users can run to connect to the server.
You will first write a server program that allows users (clients) to upload and download files to and from a specified directory. After the server has started, it will be in passive mode and listen for the client request. To connect to the server, you must write a client program
Although the project is (hopefully) simple to describe, there are a number of issues that you need to worry about. First, the server must be able to handle multiple client connections (all of which might be active at any given time). Second, the server needs to defend itself from attack and abuse. For example, the server should not allow clients to access forbidden files (such as the system password file), overwrite existing files on uploads, or crash if a client starts misbehaving. In addition, the server needs to properly manage system resources (since the server runs forever, it shouldn’t leak memory or file descriptors). Finally, the server should limit the number of simultaneous client connections and automatically disconnect clients that appear to be idle.
Most of the work on this project is focused on the implementation of the server. The client should be relatively easy.
You will be writing a server program and client program that speak the according to rules of FTP
Your Server side should have the following functionalities:
Your Client side should have the following functionalities:
You should try to make the client as simple as possible. Most of the work in this assignment is focused on the server.
More about the client connection: The reliability of the client is far less important than that of the server (consider the reliability of web-browsers compared to web-servers for instance). In particular, it is not necessary for the client to gracefully exit or inform the server that it is done. The server may also decide to simply terminate the client connection (if we have been idle for too long, if there are too many people connected, or if a protocol error occurred). Although protecting the server is clearly more important, one shouldn’t completely ignore security on the client.