Las clases de java que implementan los socket son:
java.net.Socket
java.net.SocketServer
java.net.Socket nos permite establecer un socker en el cliente y establecer una conexión con un socket servidor.
java.net.SocketServer sirve para establecer un socket en un servidor y escuchar las peticiones de soket clientes.
Trabajar con un socket cliente requiere varios pasos:
1- Abrir el socket utilizando uno de sus constructores, estableciendo la ip y puerto de destino.
2- Abrir los stream de entrada y salida mediante los métodos getInputStream() y getOutputStream().
3- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Y por ultimo cerrar los stream mediante el método close()
5- Y cerrar los socket mediante el método close()
Los atributos con los que cuenta la clase socket son:
getLocalPort(): Devuelve el puerto origen (local).
getInetAddress(): Devuelve la dirección destino (remota).
getPort(): Devuelve el puerto destino (remoto).
getLocalAddress(): Devuelve la dirección origen (local).
Ejemplo:
import java.io.*;
import java.net.*;
public class EchoClient
{
public static void main(String[] args)
{
try
{
Socket clientSocket = new Socket("192.168.1.2",1234);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
System.out.println("Enviando: ¡¡¡¡Ecooo!!!!");
out.println("¡¡¡¡Ecooo!!!!");
System.out.println("Recibiendo: " + in.readLine());
out.close();
in.close();
clientSocket.close();
}
catch (UnknownHostException e) { }
catch (IOException e) { }
}
}
Trabajar con un socket servidor requiere varios pasos:
1-Abrir el socket: mediante uno de sus constructores, habitualmente dándole el puerto donde escuchar.
2- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Cerrar los streams: mediante el método close().
5- Cerrar el socket: mediante el método close().
Ejemplo:
import java.io.*;
import java.net.*;
public class EchoServer
{
public static void main(String[] args)
{
try
{
ServerSocket serverSocket = new ServerSocket(1234);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
String inputLine = in.readLine();
System.out.println("Recibiendo: " + inputLine);
String outputLine = inputLine.toUpperCase();
System.out.println("Enviando: " + outputLine);
out.println(outputLine);
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
catch(IOException ex) { }
}
}
