Cliente y sevidor

Solo disponible en BuenasTareas
  • Páginas : 7 (1510 palabras )
  • Descarga(s) : 0
  • Publicado : 11 de noviembre de 2011
Leer documento completo
Vista previa del texto
Envió y recepción de mensajes entre un cliente y servidor J2ME

Código del servidor J2ME

[pic]

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class ServidorSocketMid extends MIDlet implements CommandListener {
Display display;
Form formulario;

// Campo de texto para introducir el mensaje aenviar al cliente
TextField texto;

// Mensaje que se presenta al usuario. También es el objeto mediante el que se presenta // el mensaje que recibe el midlet
StringItem mensaje;

// Tarea que se encarga del envío de mensajes
TareaEnviar tEnvio;

Command salir;

// Definimos el comando para enviar mensajes cuando se ha establecido la conexión con // el cliente
Commandenviar;
// Canales para la recepción y envío de mensajes
InputStream is;
OutputStream os;

//Variable de Conexión de Sockets
SocketConnection sc;

// Parámetros que se pasan al método open() para permitir que los clientes establezcan // conexión con el dispositivo
String url = "socket://:2500";

public ServidorSocketMid() {

formulario = new Form("Servidor");mensaje = new StringItem(null, " ");
formulario.append(mensaje);

// Creamos el campo de texto para introducir el mensaje a enviar
texto = new TextField( "Texto:","",255,TextField.ANY );

salir = new Command( "Salir",Command.EXIT,1 );
enviar = new Command( "Enviar",Command.ITEM,1 );
formulario.addCommand( salir );
formulario.setCommandListener( this );
}/** Lanza la aplicación presentando el formulario al usuario en donde se muestra el mensaje de espera y se lanza la tarea que se queda esperando en el socket de entrada a que se envíen mensajes **/
public void startApp() {
display = Display.getDisplay( this );
display.setCurrent( formulario );

// Creamos y lanzamos la tarea de control de la espera de mensajes provenientes de los// clientes
Thread t = new Thread() {
public void run() {
// Efectuamos la llamada al servidor
controlConexion();
}
};
t.start();
}

public void pauseApp() {}

public void destroyApp( boolean flag ) {}

public void commandAction(Command c, Displayable d) {
// Si es el cierre de la ventana de aviso, es porque ha habido unproblema y cerramos el // midlet, o si lo queremos cerrar.
if( c == Alert.DISMISS_COMMAND || c == salir ) {
// Cerramos todos los canales abiertos
try {
if( is != null ) is.close();
if( os != null ) os.close();
if( sc != null ) sc.close();
}catch( IOException e ) {}
destroyApp( true );
notifyDestroyed();
}

// Si se trata deenviar el mensaje, lanzamos la tarea que se encarga de ello, para no // bloquear la pantalla
if (c == enviar ) {
tEnvio.enviar( texto.getString() );
}
}

/** Método que abre el socket a la espera de conexiones de clientes y una vez establecida la conexión crea la tarea encargada de enviar mensajes de respuesta al cliente, presentando en pantalla un campo de textopara la introducción de texto.
Una vez establecida la conexión, se queda a la espera de mensajes enviados por el cliente. Cuando el cliente cierra la conexión, vuelve a la espera de conexión por parte de otro cliente **/
private void controlConexion() {
try {
mensaje.setText( "Esperando conexiones.." );

// Creamos el socket servidor, que se queda en esperaServerSocketConnection ssc = (ServerSocketConnection)Connector.open( url );

// Creamos un blucle para el control de las conexiones
while( true ) {
formulario.setTitle( "Servidor -> Esperando.." );
mensaje.setText( "Esperando conexiones.." );

// Quedamos a la espera de que alguien se conecte
sc = (SocketConnection)ssc.acceptAndOpen();

// Deshabilitamos DELAY para...
tracking img