Java - consulta sobre cliente -servidor en java

 
Vista:

consulta sobre cliente -servidor en java

Publicado por Juan Andres (3 intervenciones) el 07/11/2006 21:12:27
holaa, les escribo por que tengo un gran problema que no he podido solucionar, y espero que alguno de ustedes me pueda ayudar, tengo que levantar un servidor el cual reciba datos de una GUI (hecha en java porsupuesto), es en realidad un programa cliente -servidor , pero en mi caso sería un solo cliente. Este dato que recibe el servidor (que en mi caso es un numero el cual envio), lo envia devuelta a la GUI y lo muestra en pantalla, a la vez, el servidor al recibir el dato hace correr otro programita (tini term)que esta inserto en el, bueno, este otro programita es otra clase , la cual me hace levantar los puertos seriales de una tarjeta Tini (que no se si alguien habra escuchado de ella), y esta envia ese dato a un PIC, bueno, no me doy mas vueltas

La gui esta hecha ya y funciona perfectamente, pero el problema esta en el servidor, yo baje unos hechos y adecue uno para lo que yo requería, pero creo que aún asi, por lo que me han dicho, el servidor esta hecho para hacer mas cosas de las que realmente necesito y acabo de explicar, tengo otro problema tambien que es que al desconectarme, el programita (tiniterm) sigue corriendo, y no se como pararlo, peor me interesa mas que me ayuden a solucionar lo primero, no se si alguien me puede revisar el programa y decrime que tengo de mas, o si alguien tiene un programa cliente -servidor, lo mas simple posible, y no como los que he podido ver que pueden recibir varios clientes

de antemano muchisimas gracias, y espero que de verdad me ayuden por que estoy super complicado

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

public class TcpServer implements Runnable {

private ServerSocket server;
private int readTimeout;
private Thread serverThread;
private volatile boolean runServer;

/**
* Método principal de la clase
*/
public static void main(String[] args) throws IOException {

int localPort = 5551;

//Interrupción en milisegundos para esperar datos después de la conexión
int readTimeout = 5000000;

//Se crea un objeto de TcpServer que usa localPort y readTimeout.
TcpServer myTcpServer = new TcpServer(localPort, readTimeout);

while (true){

// Lazo infinito que ejecuta esperando conexión
try {

Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.print("InterruptedException: ");
System.out.println(e.getMessage() );
}
}
} // fin main()


//Se crea un hilo para manejar las peticiones una vez que uno se conecte
// param readTimeout Tiempo en milisegundos para esperar un byte


public TcpServer(int localPort, int readTimeout) throws IOException {

// Se crea un server socket en localPort.

server = new ServerSocket(localPort);
System.out.println("Server listening on port " + localPort + ".");

this.readTimeout = readTimeout;

serverThread = new Thread(this);
serverThread.setDaemon(true);

serverThread.start();
} // Fin del constructor TcpServer

/**
* Parar el server.
*/
public void stop() {

//Cuando runserver es falso,este termina
runServer = false;

try {
// Cerrar el socket
server.close();
} catch (IOException e) {
}
} //fin del stop()

/**
* Método principal para el hilo.
*/
public void run() {

runServer = true;

while (runServer) {
try {
// Esperar y aceptar una petición de conexión
Socket socket = server.accept();

try {
// LLamar al metodo para manejar la conexión
handleConnection(socket);

} catch (IOException e) {
System.out.print("Error while working with socket: ");
System.out.println(e.getMessage());
} finally {

// Cerrar el socket para liberar recursos

try {
socket.close();
} catch (IOException e) {
}
}
} catch (IOException e) {

runServer = false;
}
}
} // fin run()

/**
Manejar la conexión por si solo
*/
private void handleConnection(Socket socket) throws IOException {

System.out.println("Connected to " + socket);

socket.setSoTimeout(readTimeout);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();

//Comienza el control

try {
int b=in.read();

System.out.println("Recivo " +b);

String data="prender led";

PrintWriter envio=new PrintWriter(socket.getOutputStream(),true);

envio.println(data);

// Comienza a correr TiniTerm
try {
TiniTerm term = new TiniTerm("serial0", 9600, b);
term.start();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}

} catch (InterruptedIOException ex) {

System.out.print("The remote host sent no data within ");
System.out.print(readTimeout / 1000);
System.out.println(" seconds.");
}

} // fin de handleConnection()




} // fin de la clase TcpServer
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder