Un socket es un “enchufe” de software que permite a dos programas comunicarse por red. En Java (vía TCP):
TCP garantiza entrega y orden de los bytes; tú decides el protocolo de mensajes (por ejemplo, “una línea por mensaje”).
Servidor
Cliente
Servidor
package es.cesguiro.socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private final int port = 12345;
public Server() {
}
public void start() {
System.out.println("Starting server on port " + port + "...");
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Server started. Waiting for client connections...");
Socket socket = serverSocket.accept();
System.out.println("Client connected: " + socket.getInetAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = in.readLine();
System.out.println("Received message: " + message);
socket.close();
serverSocket.close();
} catch (Exception e) {
System.out.println("Error starting server: " + e.getMessage());
throw new RuntimeException("Failed to start server", e);
}
}
}
package es.cesguiro.socket;
public class Main {
public static void main(String[] args) {
Server server = new Server();
server.start();
}
}
Cliente
package es.cesguiro.socket;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
private final String host = "localhost";
private final int port = 12345;
public void connect() throws IOException {
System.out.println("Connecting to server at " + host + ":" + port + "...");
Socket socket = new Socket(host, port);
System.out.println("Connected to server: " + socket.getInetAddress());
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello from client!");
System.out.println("Message sent to server.");
out.close();
}
}
package es.cesguiro.socket;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
Client client = new Client();
try {
client.connect();
} catch (IOException e) {
System.err.println("Error connecting to server: " + e.getMessage());
e.printStackTrace();
}
}
}