🧠 What are TCP/IP Sockets?
A Socket is an endpoint for communication between two programs over a network. TCP (Transmission Control Protocol) ensures reliable and ordered data transfer, while IP (Internet Protocol) handles addressing and routing.
⚙️ How TCP/IP Communication Works
- Server creates a
ServerSocketand listens on a port. - Client connects using
Socket. - They exchange data via input/output streams.
- Connection closes after communication.
📊 Concept Diagram
+————-+ <—- TCP/IP —-> +————-+
| Client | | Server |
| Socket | | ServerSocket|
+————-+ +————-+
| Client | | Server |
| Socket | | ServerSocket|
+————-+ +————-+
✅ Easy Java Server Code
// SimpleServer.java
import java.io.*;
import java.net.*;
public class SimpleServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(5000);
System.out.println("Server is waiting for client...");
Socket s = ss.accept();
System.out.println("Client connected.");
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
String msg = in.readLine();
System.out.println("Client says: " + msg);
out.println("Hello from Server!");
s.close();
ss.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
✅ Easy Java Client Code
// SimpleClient.java
import java.io.*;
import java.net.*;
public class SimpleClient {
public static void main(String[] args) {
try {
Socket s = new Socket("localhost", 5000);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.print("Enter a message for server: ");
String msg = input.readLine();
out.println(msg);
String reply = in.readLine();
System.out.println("Server says: " + reply);
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
🚀 How to Run
- Compile both programs:
javac SimpleServer.java SimpleClient.java - Run the server first:
java SimpleServer - Then run the client:
java SimpleClient - Type a message and see the exchange!