redes
Estudis d'Informàtica, Multimèdia i Telecomunicació
Xarxes i Aplicacions Internet
Pràctica 2: Programació bàsica de sockets i
arquitectura
d'aplicacions web
Qualificació de la pràctica 2
Aquesta pràctica consta de quatre parts:
Part 1: Estudi del codi de partida
Part 2: Programació de sockets (TCP)
Part 3: Programació de sockets (UDP)
Part 4:Arquitectura d'aplicacions web
La nota anirà en funció de les parts lliurades:
Part 1: permet optar a una nota màxima en aquesta pràctica de C-.
Parts 1 i 2: permet optar a una nota màxima en aquesta pràctica de C+.
Parts 1, 2 i 3: permet optar a una nota màxima en aquesta pràctica de B.
Parts 1, 2, 3 i 4: permet optar a una nota màxima en aquesta pràctica de A.
Nota: Lliureu les vostresrespostes a la bústia de pràctiques de l’aula de Xarxes i
Aplicacions Internet. Useu algun programa de compressió per fer el lliurament en un
sol arxiu comprimit que inclogui tots els contingut, en una carpeta diferent per a cada
part que hagueu contestat.
Anomeneu el fitxer: Practica2_Cognom1_Cognom2_Nom.[zip, tar, tgz, rar...]
Primera Part (Nota màxima: C-) Estudi del codi de sockets departida
1.a) Comenteu el codi que us proporcionem de manera que mostreu que enteneu el seu
funcionament, tant en TCP com en UDP. Poseu els comentaris dins el mateix fitxer de
codi.
Què contenen les variables, què fan les funcions, què es pretén amb les iteracions, etc.
import java.net.*;
import java.io.*;
public class clientetcp {
public static void main(String argv[]) {
if (argv.length== 0) { // En caso de que el cliente no reciba ningún parámetro
mostrará el error "java clientetcp servidor".
System.err.println("java clientetcp servidor");
System.exit(1);
}
// Almacenamos en el buffer un valor introducido por la pantalla
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Socket socket;
InetAddress address;
byte[] mensaje_bytes = new byte[256];String mensaje="";
try {
// Obtenemos el nombre de la dirección remota del socket
address=InetAddress.getByName(argv[0]);
// Se crea un objeto de tipo socket
// para establecer una conexión por el puerto 6001
socket = new Socket(address, 6001);
// Se declara un objeto de tipo DataOutputStream para mandar valores al
servidor
DataOutputStream out = newDataOutputStream(socket.getOutputStream());
do {
// Leemos el mensaje y lo guardamos en la variable mensaje
mensaje = in.readLine();
// Enviamos la palabra que hemos leido al servidor
out.writeUTF(mensaje);
} while (!mensaje.startsWith("end")); // Mientras el mensaje no sea la palabra
"END" enviamos mensaje al servidor
}
catch (Exception e) { // En caso de que exista alguna excepción visualizamos
error y finalizamos.System.err.println(e.getMessage());
System.exit(1);
}
}
}
import java.net.*;
import java.io.*;
public class servidortcp {
public static void main(String argv[]) {
ServerSocket socket; //Se crea un objeto de tipos ServerSocket
boolean fin = false; // Declaramos la variable fin de tipo booleano y la inicializamos a
falso
try {
socket = new ServerSocket(6001); //Abre un socket en modo escuchaen el
puerto 6001
Socket socket_cli = socket.accept(); // Se acepta la conexión
DataInputStream in = new DataInputStream(socket_cli.getInputStream());
// Clase para recibir datos
do {
String mensaje = ""; // Declaramos la variable mensaje de tipo String
mensaje = in.readUTF(); //La variable Mensaje guarda el valor que ha
mandado el cliente
System.out.println(mensaje);
} while (1 > 0);// Esta iteración nos servirá para que hasta no se introduzca la
palabra “END” seguiremos conectados entre cliente-servidor
}
catch (Exception e) {
System.err.println(e.getMessage());
System.exit(1);
}
}
}
import java.net.*;
import java.io.*;
public class clienteudp {
public static void main(String argv[]) {
if (argv.length == 0) { // En caso de que el cliente no reciba ningún...
Regístrate para leer el documento completo.