🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Sockets y tiempos de espera

#27698
From: R.Daneel777
Date: Sun, 02 Aug 1998 00:00
61 lines
2583 bytes
Holas,

Estoy codificando una aplicaci�n basada en en la arquitectura
cliente/servidor, ys e trata tan solo de la parte del cliente. Ya tengo
experiencia en otros lenguajes, ya sea en m�quinas unix como en windows con
los sockets, el winsock y tal, incluso program� una applet de chatting que
funcionaba bastante bi�n.

Ahora bi�n, la jerarqu�a de clases es la siguiente.
- una clase principal a modo de interface full-AWT.
- una clase que maneja las conexiones y que se comunica con la principal
cuando recibe datos.

La principal enviar� datos a trav�s de esta subClase, manejando as� la API
de red en una sola parte del c�digo.

Cuando envio datos al servidor este me devuelve las respuesas de forma no
sincronizada. Es decir, para dos peticiones, las respuestas pueden venir en
diferente orden. No es problema ya que las respuestas vienen codificadas de
tal forma que resulta facil clasificarlas.
Corriendo el servidor en local, el cliente en C, y el poco c�digo que tengo
en JAVA a la vez obtengo tiempos de espera del orden de 20 veces superior...
Aunque solo tenga el servidor y la aplicaci�n JAVA... Siempre sucede esto.

La applet de chatting que program� era del orden de 1.5 veces m�s lenta...
Inapreciable.
Por qu� sucede esto?
He traceado el servidor, y resulta que existe adem�s cierto retraso en la
recepci�n de los datos.
La aplicaci�n tarda en mandar y en recibir... (?)
Aqu� va el c�digo:

public boolean send(String s) {
      try {
           byte[] b=new byte[s.length()];
           s.getBytes(0,s.length(),b,0);
           dataOutput.write(b);
           return true;
      }
      catch(IOException ioe) {
           return false;
      }
 }

while(status==CONNECTED) {
     int bytesAvail;
     try {
          while((bytesAvail=dataInput.available())<=0);
           byte[] seq=new byte[bytesAvail];
           dataInput.read(seq);
           procesarDATA(seq);
         }
         catch(IOException ioe) {
                status=ERROR_WHILE_RECIEVING;
                // IO error
         }
    }

Alguna idea??

__rDaneEl__
Technical Details
Message-ID: <6q2diu$t3g$1@talia.mad.ibernet.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,4076a759fa75ab87,start
X-Google-Attributes: gid1116f3,public
From: "R.Daneel777" <rdaneel777@usa.net>
Subject: Sockets y tiempos de espera
Date: 1998/08/02
Message-ID: <6q2diu$t3g$1@talia.mad.ibernet.es>
X-Deja-AN: 377261881
Organization: Telefonica Transmision de Datos
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3
Newsgroups: es.comp.lenguajes.java