Está en la página 1de 4

Facultad de ingeniería

Programa Ingeniería de sistemas


Docente: J Eduar Criollo S
Asignatura: Redes de computadores

Actividad de Aprendizaje 1 Unidad Tres


Sockets UDP y TCP

1. Estudie con atención el siguiente código de un socket TCP:

 Cliente Socket TCP:


import java.net.*;
import java.io.*;

public class ClienteTCP {

public static void main(String[] args) throws Exception {

//Establece el buffer de datos recibidos


byte [] datos= new byte [256];

//Variable para almancear la IP del servidor


String dirIP;

//mensaje a enviar
String msg="Hola soy un socket cliente TCP";

//Habilita la entrada y captura ip del servidor


System.out.println("Escriba la direccion Ip del servidor");
BufferedReader x= new BufferedReader(new InputStreamReader(System.in));
dirIP=x.readLine();

//inicializa la comunicacion con el servidor sobre el puerto 5000


Socket socket = new Socket (dirIP,5000);

//Habilita el flujo de entrada para el servidr en el socket


DataInputStream din = new DataInputStream(socket.getInputStream());

//Habilita el flujo de salida para el servidr en el socket


DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
System.out.println("Enviando mensaje a servidor " + msg);

//Envia mensaje al servidor en bytes


dos.write(msg.getBytes());

//Lee el mensaje del servidor y convierte a cadena de mensajes e imprime


mensaje del servidor
din.read(datos,0,datos.length);
String message = new String(datos);
System.out.println(message);

//cierra los flujos de entrada y salida


din.close();
dos.close();

//cierra el socket
socket.close();
Facultad de ingeniería
Programa Ingeniería de sistemas
Docente: J Eduar Criollo S
Asignatura: Redes de computadores

}
}

 Servidor Socket TCP:


import java.net.*;
import java.io.*;

public class ServidorTCP {

public static void main(String[] args) throws Exception {


//Inicia el socket de TCP en el puerto 5000
ServerSocket server = new ServerSocket (5000);

//Mensaje a enviar al cliente


String msg=("Hola cliente desde el servidor \n");

//Buffer de datos recibidos


byte[]datos= new byte[256];
System.out.println("Iniciando el servidor..");

while(true){
System.out.println("Servidor iniciado, esperando clientes...\n");

//Acepta al cliente y establece comunicación con el


Socket socket = server.accept();

//Habilita el flujo de entrada para el socket


DataInputStream dis = new DataInputStream(socket.getInputStream());

//Habilita el flujo de salida para el socket


DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

//Capta el mensaje del cliente


dis.read(datos,0,datos.length);

//Imprime en pantalla el mensaje enviado desde el cliente


System.out.println("Se ha detectado un cliente.\n El cliente dice: " +
new String(datos));
System.out.println("Enviando mensaje de respuesta: " + msg + "...");

//Envia un mensaje de respuesta al cliente


dos.write(msg.getBytes(),0,msg.length());

//Cierra los flujos de entrada y salida del socket


dis.close();
dos.close();

//Cierra el socket y finaliza comunicación


socket.close();

}
}

}
Facultad de ingeniería
Programa Ingeniería de sistemas
Docente: J Eduar Criollo S
Asignatura: Redes de computadores

1. Ejecute el siguiente código explicado en clase:

Cliente Socket UDP:


import java.net.*;
import java.net.DatagramSocket;
import java.util.Scanner;

public class ClienteUDP {

public static void main(String args[]) throws SocketException {

byte[] buffer = new byte[1024];

//Sentencia de control de errores


try{
//Creo el socket de UDP
DatagramSocket miSocket = new DatagramSocket();

//Muestro datos del cliente


System.out.println("Esta usted intentado una conexion desde:");
System.out.println("Nombre de host: " + InetAddress.getLocalHost().getHostName());
System.out.println("Ip de host: " + InetAddress.getLocalHost().getHostAddress());

//Obtengo la ip localizacion de localhost


InetAddress host = InetAddress.getLocalHost();

//Preparo el mensaje a enviar


String entradaTeclado = "Mensaje de prueba 0";
buffer = entradaTeclado.getBytes();

//Indico el puerto del servidor


int puertoserver = 9107;

// Construimos un datagrama para enviar el mensaje al servidor indicando puerto e ip del cliente
DatagramPacket miPaquete = new DatagramPacket(buffer,buffer.length, host, puertoserver);

// Enviamos el datagrama
miSocket.send(miPaquete);

System.out.println("Datagrama enviado con exito!");

//cierro el socket
System.out.println("Socket cerrado desde el cliente");
miSocket.close();

}catch (SocketException e) {
}catch (UnknownHostException e) {
}catch (IOException e){
}
}
}
Facultad de ingeniería
Programa Ingeniería de sistemas
Docente: J Eduar Criollo S
Asignatura: Redes de computadores

Servidor Socket UDP:

import java.net.*;
import java.io.*;

public class ServidorUDP {

public static void main(String[] args) {

byte[] bufer = new byte[1024];

//Sentencia de control de errores


try {

System.out.println("Servidor UDP iniciado" );


System.out.println("En espera de un cliente");

//Creacion del socket


DatagramSocket socketUDP = new DatagramSocket(9107);

//Siempre atendera peticiones


while (true) {

// Construimos el DatagramPacket para recibir peticiones


DatagramPacket peticion = new DatagramPacket(bufer, bufer.length);

// Leemos una petición del DatagramSocket


socketUDP.receive(peticion);

// Muestro datos captados por el servidor en DatagramSocket


System.out.println("Recibo la informacion de un cliente");
System.out.println("Ip origen " + peticion.getAddress());
System.out.println("Puerto origen: " + peticion.getPort());
System.out.println("Mensaje :" + new String(peticion.getData(),0,peticion.getLength()));

System.out.print("Servidor UDP en espera de un cliente \n");


}

} catch (SocketException e) {
} catch (IOException e) {
}
}
}

Elaboro:

MSc. Johnn Eduar Criollo


Docente Ingeniería de Sistemas
p.jcriollo@academia.usbbog.edu.co.
Bogotá

También podría gustarte