This repository contains a collection of Java networking projects, ranging from simple client-server applications to more complex examples involving multithreading, synchronization, and secure communication. It serves as a practical guide for learning and implementing networking concepts in Java.
Repo Link: Java-Networking Git
The repository is organized into several directories, each demonstrating a specific concept or a complete application.
-New-Step-by-step-learning: A guided progression through core networking topics.1.1_SimpleClientServer: Basic client-server communication.1.2_Threading: Handling multiple clients with a multi-threaded server.1.3_Synchronization: Demonstrating thread synchronization with shared resources.1.4_ChatApplication: A complete multi-user chat application.1.5_SecuredChatApplication: A chat application secured with SSL/TLS.
ChatApp: A more refined multi-client chat application.reader_writer_thread: Demonstrates full-duplex (simultaneous read/write) communication using separate threads.simple_client_server_using_threading: A basic client-server model that uses multithreading.simpleclient_server_without_thread: A fundamental client-server application that can only handle a single client at a time.Threading: Examples of core Java threading concepts, including the Producer-Consumer problem.Thread-Pooling: Beginner to expert examples of using thread pools.
The projects in this repository are built using standard Java and can be compiled and run from the command line. For detailed instructions, please refer to the README.md file within each specific project directory.
-
Navigate to a project's source directory. For example, to run the simple client-server project:
cd "-New-Step-by-step-learning/1.1_SimpleClientServer"
-
Compile the Java files.
javac *.java -
Run the Server. Open a terminal and run the main server class.
java SimpleServer
-
Run the Client. Open a new terminal and run the client class.
java SimpleClient
Contributions are highly encouraged! If you have any suggestions, improvements, or bug reports, please feel free to open an issue or submit a pull request on GitHub. Your input helps make this project better!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Acknowledging my BUET CSE course teacher, Professor Rifat Shahriyar for his invaluable teaching and guidance.
This project is distributed under the MIT License. See the LICENSE file for more information.
