This repository documents my learning journey in network programming with Java.
It contains simple yet practical implementations of TCP, UDP, and other network protocols.
The goal is to build a strong foundation in how network communication works at a low level.
networking-programming/
β
βββ tcp/
β βββ EchoServer.java
β βββ EchoClient.java
β βββ README.md
β
βββ udp/
β βββ UDPEchoServer.java
β βββ UDPEchoClient.java
β βββ README.md
β
βββ http/ # (upcoming)
βββ websocket/ # (upcoming)
βββ README.md
-
Description:
A simple TCP server that listens for client connections and echoes back any messages sent.
Demonstrates connection-oriented communication usingServerSocket
andSocket
. -
How to run:
javac tcp/EchoServer.java tcp/EchoClient.java java tcp.EchoServer java tcp.EchoClient
-
Quick Test (via Telnet):
telnet localhost 1234
-
Description:
A simple UDP server that listens for datagrams and echoes them back to the sender.
Demonstrates connectionless communication usingDatagramSocket
. -
How to run:
javac udp/UDPEchoServer.java udp/UDPEchoClient.java java udp.UDPEchoServer java udp.UDPEchoClient
- Multi-client TCP Chat Server (threaded server, multiple clients can chat simultaneously).
- Basic HTTP Server (serving static HTML files).
- HTTP/1.1 Features (headers, persistent connections).
- WebSockets (real-time communication over HTTP upgrade).
- Java Socket Programming (Oracle Tutorial)
- Java Datagram (UDP) Tutorial
- Beejβs Guide to Network Programming (C, but excellent concepts)
By the end of this repository, I aim to:
- Understand TCP vs UDP deeply.
- Gain hands-on experience with Java Socket APIs.
- Explore HTTP internals and WebSockets.
- Simulate how real-world servers (Nginx, Tomcat, Node.js) handle requests.