🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #17113

Re: Fin de comunicaci�n con sockets

#17113
From: GP
Date: Wed, 06 Dec 2000 00:00
179 lines
6643 bytes
Creo que lo que necesitas hacer es crear un thread para cada conexion o sea
cada cliente, cuando el servidor acepta la conexion se debe crear un nuevo
thread y cuando el cliente salga de la conexion el thread te da la
Exception.

Saludos.

   GP
http://lotmex.tripod.com



"Joseba Montejo" <software@zigor.com> wrote in message
news:8vj9oi$j74$1@lola.ctv.es...
>     Mil disculpas, ah� os va el programa:
>
>
/***************************************************************************
> *********/
> /*    EthernetSerie.java
>     Programa que hace una comunicaci�n transparente entre
>   ethernet y linea serie.
>     La comunicaci�n se hace con sockets TCP, por el puerto 7.
>     La comunicaci�n por puerto serie se hace a 9600 baudios,
>   8 bits de datos, sin paridad, 1 bit de stop.
>     La aplicaci�n termina cuando se recibe por la ethernet
>   el car�cter 'X'.
> */
>
> import java.io.*;
> import java.net.*;
> import java.util.*;
> import javax.comm.*;
>
> public class EthernetSerie
> {
>   static CommPortIdentifier portId;   // Identificador del puerto.
>
>   public static void main(String[] args) throws IOException
>   {
>     ServerSocket servidor;   // Socket servidor.
>     Socket cliente;    // Socket de atenci�n al cliente.
>
>     SerialPort PuertoSerie;   // Manejador del puerto serie.
>
>     TransfesorDeBytes EthernetASerie;
>     TransfesorDeBytes SerieAEthernet;
>
>     servidor = new ServerSocket( 7 );  // Se asocia el socket servidor con
> el puerto 7.
> //    System.out.println( "socket creado" );
>
>     do {
>       // Esperar a que se realice una conexi�n.
>       System.out.println("Esperando conexi�n...");
>       cliente = servidor.accept();  // Asignar la conexi�n al socket
> cliente.
>       System.out.println( "��Conectado!!" );
>
>       // Crear el manipulador de puerto serie.
>       try {
>         portId = CommPortIdentifier.getPortIdentifier("COM1");
>       }
>       catch (NoSuchPortException e) {
>         System.out.println("No existe el puerto serie especificado.");
>       }
>       try {
>         // Abrir el puerto.
>         PuertoSerie = (SerialPort)portId.open("EthernetSerie",1000);
>         try {
>           PuertoSerie.setSerialPortParams( 9600,
>                                            SerialPort.DATABITS_8,
>                                            SerialPort.STOPBITS_1,
>                                            SerialPort.PARITY_NONE);
>           System.out.println("Puerto abierto");
>
>           // Atender a la comunicaci�n.
>           EthernetASerie = new TransfesorDeBytes(
cliente.getInputStream(),
> PuertoSerie.getOutputStream() );
>           SerieAEthernet = new
> ransfesorDeBytes( PuertoSerie.getInputStream(),
cliente.getOutputStream() );
>           do {
>             // Esperar a que los dos procesos est�n en marcha.
>           } while (!(EthernetASerie.isAlive() &&
SerieAEthernet.isAlive()));
>           System.out.println("Comunicaci�n en marcha...");
>           do {
>             // Esperar a que se cierre la comunicaci�n.
>             // Normalmente se saldr� porque el cliente corta la conexi�n.
>           } while (EthernetASerie.isAlive() && SerieAEthernet.isAlive());
>           System.out.println("Se vuelve a esperar una conexi�n.");
>           // Destruir los transfesores de caracteres.
>           EthernetASerie.stop();
>           SerieAEthernet.stop();
>           // Una vez finalizada la comunicaci�n, cerrar el socket y la
linea
> serie.
>           PuertoSerie.close();
>           cliente.close();
>         }
>         catch (javax.comm.UnsupportedCommOperationException e) {
>           System.out.println("No se ha podido configurar el puerto");
>         }
>       }
>       catch (javax.comm.PortInUseException e) {
>         System.out.println("El puerto serie est� abierto por otra
> aplicaci�n");
>       }
>     } while (Character.toUpperCase((char)System.in.read()) != 'X');
>     servidor.close();
>     System.out.println("Aaaaadios");
>   }
> }
>
>
> class TransfesorDeBytes extends Thread
> {
>   private BufferedReader BufEntrada;
>   private OutputStream BufSalida;
>
>   public TransfesorDeBytes (InputStream BufferEntrada, OutputStream
> BufferSalida)
>   {
>     // Asignar los buffer a los que se pasan desde la clase llamante.
>     BufEntrada = new BufferedReader(new InputStreamReader(BufferEntrada));
>     BufSalida = BufferSalida;
>     // Poner en marcha la transferencia de bytes.
>     start();
>   }
>
>   public void run()
>   {
>     int caracter;
>
>     try {
>       do {
>           caracter = BufEntrada.read();
>           if (caracter != -1) {
>             // Hay alg�n byte para ser leido.
>             BufSalida.write( caracter );  // Transferir el byte recibido.
>           BufSalida.flush();
>           System.out.print( caracter );
>         }
>         BufSalida.flush();
>       } while (true);
>     }
>     catch (java.io.IOException e) {
>       // Ha habido una excepci�n, por lo que se detiene la ejecuci�n del
> proceso.
>       System.out.println("Se ha parado uno de los procesos.");
>       stop();
>     }
>   }
> }
>
>
/***************************************************************************
> *********/
>
> --
> Joseba Montejo
> Corporaci�n ZIGOR S.A.
> S. Miguel de Acha 4
> 01010 VITORIA
> Spain
> software@zigor.com
> http://www.zigor.com
>
> Zorro <noexisto@noexisto.com> escribi� en el mensaje de noticias
> 8vj8d1$221$1@talia.mad.ttd.net...
> > �Y d�nde est� el programa?
> >
> >
> >
>
>
>
Technical Details
Message-ID: <%4FX5.305$4W.111492@nntp1.onemain.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <8vbekr$u8$1@lola.ctv.es> <8vd712$eii$1@talia.mad.ttd.net> <8vdlmi$pmf$1@talia.mad.ttd.net> <8vgp91$n8m$1@lola.ctv.es> <8vhfnj$brj$06$1@news.t-online.com> <8viu4v$7tt$1@lola.ctv.es> <8vj8d1$221$1@talia.mad.ttd.net> <8vj9oi$j74$1@lola.ctv.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,6d6e03ba0ddc8a12
X-Google-Attributes: gid1116f3,public
From: "GP" <osovallejo@hotmail.com>
Subject: Re: Fin de comunicaci�n con sockets
Date: 2000/12/06
Message-ID: <%4FX5.305$4W.111492@nntp1.onemain.com>
X-Deja-AN: 702048995
References: <8vbekr$u8$1@lola.ctv.es> <8vd712$eii$1@talia.mad.ttd.net> <8vdlmi$pmf$1@talia.mad.ttd.net> <8vgp91$n8m$1@lola.ctv.es> <8vhfnj$brj$06$1@news.t-online.com> <8viu4v$7tt$1@lola.ctv.es> <8vj8d1$221$1@talia.mad.ttd.net> <8vj9oi$j74$1@lola.ctv.es>
X-Priority: 3
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
X-Complaints-To: abuse@onemain.com
X-Trace: nntp1.onemain.com 976166331 209.239.218.146 (Thu, 07 Dec 2000 00:18:51 EST)
Organization: intelekto Software
X-MSMail-Priority: Normal
NNTP-Posting-Date: Thu, 07 Dec 2000 00:18:51 EST
Newsgroups: es.comp.lenguajes.java