To connect to a server in Java, you can use either **IP-based socket connections** (TCP/UDP) for real-time communication (like games) or **HTTP-based connections** (REST/WebSocket) for web APIs. Below are examples for both approaches:
---
## **1. Connecting via IP (Socket Programming)**
Best for **real-time applications** like multiplayer games, chat apps, or low-latency services.
### **Example: TCP Socket Connection (Client-Side)**
```java
import java.io.*;
import java.net.*;
public class SocketClient {
public static void main(String[] args) {
String serverIP = "192.168.1.100"; // Replace with server IP
int serverPort = 8080; // Replace with server port
try (Socket socket = new Socket(serverIP, serverPort);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
// Send a message to the server
out.println("Hello Server!");
// Read server response
String response = in.readLine();
System.out.println("Server says: " + response);
} catch (UnknownHostException e) {
System.err.println("Unknown host: " + serverIP);
} catch (IOException e) {
System.err.println("Connection error: " + e.getMessage());
}
}
}
```
#### **Key Points:**
- Uses `Socket` for **TCP/IP** communication.
- Best for **real-time** applications (games, chat).
- Requires the server to be running a **SocketServer** (`ServerSocket` in Java).
---
## **2. Connecting via HTTP (URLConnection / HttpClient)**
Best for **web APIs**, REST services, or when connecting to a **website (HTTP/HTTPS)**.
### **Example 1: Using `HttpURLConnection` (Basic HTTP GET)**
```java
import java.io.*;
import java.net.*;
public class HttpClientExample {
public static void main(String[] args) {
String url = "http://www.example.com/api/data"; // Replace with your URL
try {
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection();
conn.setRequestMethod("GET");
// Read response
int responseCode = conn.getResponseCode();
System.out.println("Response Code: " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println("Response: " + response.toString());
} catch (IOException e) {
System.err.println("HTTP Request Failed: " + e.getMessage());
}
}
}
```
### **Example 2: Using `HttpClient` (Java 11+)**
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ModernHttpClient {
public static void main(String[] args) throws Exception {
String url = "http://www.example.com/api/data";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println("Status Code: " + response.statusCode());
System.out.println("Response Body: " + response.body());
}
}
```
#### **Key Points:**
- Uses **HTTP/HTTPS** protocol (works with websites & APIs).
- Supports **GET, POST, PUT, DELETE** methods.
- `HttpClient` (Java 11+) is **more modern** than `HttpURLConnection`.
---
## **Which One Should You Use?**
| Feature | **IP (Socket)** | **HTTP** |
|---------|--------------|--------|
| **Use Case** | Real-time (games, chat) | Web APIs, REST services |
| **Protocol** | TCP/UDP | HTTP/HTTPS |
| **Latency** | Low (good for games) | Higher (depends on HTTP overhead) |
| **Security** | Needs manual encryption (SSL/TLS) | Built-in HTTPS support |
| **Complexity** | More code (manual packet handling) | Easier (structured requests) |
### **Recommendation:**
- **For games → Use Sockets (TCP/UDP).**
- **For web APIs → Use HTTP (HttpClient).**
Would you like a **full server-side example** (Java Socket Server or HTTP Server) to test these connections? π
No comments:
Post a Comment