INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO

Tamaño: px
Comenzar la demostración a partir de la página:

Download "INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO"

Transcripción

1 INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO TEMA: REPORTE DEL PROYECTO SEGUNDO DEPARTAMENTAL ALUMNOS: RAMIREZ DOMINGUEZ LUIS MARIO MENDEZ RODRIGUEZ KAREN PINEDA REYES GABRIELA IVONNE GRUPO: 3CM2

2 Introducción: Desarrollar una aplicación de una radio para Internet. Utilizar como base de audio a Winamp, con el plug-in ShoutCast. Los usuarios conectados sólo necesitan el Winamp y su IP. Una radio es relativamente elaborado pero con pocas reglas a las que se debe apegar son suficientes. Con algunas aplicaciones y el reproductor Winamp, se construye una radio propia de forma extremadamente simple. Instalación de las aplicaciones con las tres herramientas descargadas. 1. Iniciar la instalación del programa Winamp donde se reproducirá la música que la audiencia escuchará. Solamente se debe aceptar el contrato de licencia y luego digitar en Siguiente, dependiendo el idioma que se tenga, hasta que inicie la instalación. 2. Enseguida instalar el plug-in que se descargó. 3. Por último, instalar el servidor de ShoutCast. Configuración de las instalaciones realizadas: Configuración del plug-in del ShoutCast de Winamp. Suponiendo que en esta parte se tiene el Winamp abierto se siguen los siguientes pasos: 1. Entrar a configuración: Seleccionar Options -> Preferences (Opciones -> Preferencias). Localizar la pestaña de Plug-ins. Dentro de ella hacer clic en DSP/Effect. 2. Seleccionar el que indica Nullsoft SHOUTcast Source DSP : Generalmente haciendo clic sobre el nombre se debería abrir, pero en caso de que no lo haga seleccionar Configure active plug-in (configurar plug-in activo). Esta herramienta funcionará como una especie de mezcladora, y es tan importante como el servidor.

3 3. Por lo anterior, se explica para qué sirve cada solapa: Main Output Encoder Input 4. Primero lo más importante es cambiar algunos valores en la pestaña Output : 5. Enseguida, en Yellowpages: Esta sección muestra los niveles de entrada de audio y cuál de las cinco salidas disponibles esta activada. Se tienen dos pestañas Connection y Yellowpages. En la primera se muestra los datos del servidor, como el puerto y la contraseña, y en la segunda los datos de la radio, como el nombre y el género. En esta sección se configuran los tipos de codificadores de audio que se deseen usar. En Input se selecciona el dispositivo de entrada que se desee usar. Predeterminadamente seleccione el Winamp, pero también se puede usar el micrófono. Hay diferentes volúmenes para manejar el volumen de la música, del micrófono y de la música una vez que se active el micrófono. Ir donde se indica Connection y en la parte Password se escribe la contraseña que se utilizó en el cuarto punto de la explicación del servidor, que se indicó recordar. Se debe llenar Description y Genre, para que las personas puedan encontrar el radio en internet. En Description colocar el nombre de su radio y en Genre el género de música que se tocará. Ahora, ya se puede digitar en Connect para que la radio esté en el aire. Para asegurarse de que todo funciona bien se recomienda digitar en Connect con el servidor a la vista, ya que si hay algo que no está funcionando bien se indicará allí. En la tercera imagen, debajo se puede ver lo que tendría que aparecer cuando la radio está siendo transmitida sin problemas.

4 Esto es lo que tendría que aparecer si todo ha salido bien durante la conexión. Si todo está en orden cualquier cosa que esté sonando en el Winamp estará sonando en la radio. Ahora, todos pueden escuchar el radio mediante Winamp pero lo único que debe saber la audiencia es su IP externa y el puerto en el que se está transmitiendo. Es posible que se tenga que abrir el puerto si se utiliza un router. Respecto al puerto, el programa utiliza de manera predeterminada el 8000 pero se le puede cambiar en Output -> Connection -> Port. Para escuchar la radio en el Winamp solo se debe hacer clic en File -> Play URL y en ese espacio ingresar la IP de la radio. Solamente resta manejar la radio desde cualquier PC.

5 En la imagen posterior se muestra cuando en la computadora se está transmitiendo la señal y tambien se aprecia la configuracion previa. Diseñar una base de datos para seleccionar las melodías a elegir. 1. Seleccionar las melodías de su elección. 2. Diseñar la interface para el cliente.

6 En esta imagen se aprecia la conexión que se establece entre una maquina y otra por medio de su ip que nos ofrece Winamp Podemos observar que utilizando una interfaz y haciendo la petición al servidor por medio de un formulario que el cliente es el que llena los campo, nos manda un mensaje que la solicitud se esta procesando.

7 En la parte de cliente existe otra interfaz en la cual se muestra las peticiones que se tiene que llevar acabo. CODIGO. import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import = "newplaylist", urlpatterns = {"/newplaylist") public class newplaylist extends HttpServlet { protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); playlist pl=new playlist(); out.println(request.getparameter("titulo")+request.getparameter("interprete")+request.getpa rameter("genero")); pl.setplaylist(request.getparameter("titulo"),request.getparameter("interprete"),request.getp arameter("genero"));

8 // <editor-fold defaultstate="collapsed" desc="httpservlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP * <code>get</code> method. * request servlet request response servlet response ServletException if a servlet-specific error occurs IOException if an I/O error occurs protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); /** * Handles the HTTP * <code>post</code> method. * request servlet request response servlet response ServletException if a servlet-specific error occurs IOException if an I/O error occurs protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); /** * Returns a short description of the servlet. * a String containing servlet description public String getservletinfo() { return "Short description"; // </editor-fold> Clase para la conexión de la base de datos y MYSQL. import java.sql.connection; import java.util.arraylist; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.statement; import java.sql.resultset;

9 public class playlist{ Connection con = null; public playlist(){ iniciarconexion(); //Inicia la conexión con la base de datos private void iniciarconexion(){ try{ Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/musica", "root", "gabysita"); catch(sqlexception e){ System.err.println("Error SQL al intentar conectar con la base de datos"); e.printstacktrace(); catch(classnotfoundexception ee){ System.err.println("No se pudo cargar la clase " + ee); //Cerrando la conexión con la base de datos public void cerrarconexion(){ try{ con.close(); catch(sqlexception e){ System.err.println("No se pudo cerrar la conexión con la base de datos"); e.printstacktrace(); //Obteniendo la lista de palabras public ArrayList getplaylist(){ Statement s; ResultSet rs; ArrayList canciones = new ArrayList(); try{ s = con.createstatement(); rs = s.executequery(" SELECT * FROM cancion"); while(rs.next()){ String titulo=rs.getstring("titulo"); String interprete=rs.getstring("interprete"); String genero=rs.getstring("genero"); String aux=titulo+","+interprete+","+genero; canciones.add(aux); catch(sqlexception e){ System.out.println("Problemas SQL en obtlistapalabras de e.printstacktrace(); catch(exception ee){ System.out.println("Problemas en obtlistapalabras de

10 ee.printstacktrace(); return canciones; public void setplaylist(string titulo, String interprete, String genero){ Statement s; //ResultSet rs; try{ s = con.createstatement(); s.executeupdate("insert into cancion(titulo, interprete, genero) values('"+titulo+"','"+interprete+"','"+genero+"');"); catch(sqlexception e){ System.out.println("Problemas SQL en obtlistapalabras de e.printstacktrace(); catch(exception ee){ System.out.println("Problemas en obtlistapalabras de ee.printstacktrace(); public void delplaylist(){ Statement s; //ResultSet rs; try{ s = con.createstatement(); s.executeupdate("delete from cancion order by id_cancion asc limit 1;"); catch(sqlexception e){ System.out.println("Problemas SQL en obtlistapalabras de e.printstacktrace(); catch(exception ee){ System.out.println("Problemas en obtlistapalabras de ee.printstacktrace();