Tengo el siguiente ejemplo en Flash:
Código :
var mnjConectar:Object = new Object(); var mnjEnviar:Object = new Object(); var sock:XMLSocket = new XMLSocket(); var cadena:String = new String("Servidor = "); sock.onConnect = function (exito:Boolean) { if(exito) trace("conectado !!"); else trace("NO CONECTADO !!"); } mnjConectar.click = function () { _root.sock.connect("localhost", 3001); } mnjEnviar.click = function () { trace("Enviando..."); _root.sock.send("hola colega"); } sock.onXML = function (src) { trace(src.toString()); } sock.onClose = function () { trace("Conexión Cerrada"); _root.sock.close; } btnConectar.addEventListener("click", mnjConectar); btnEnviar.addEventListener("click", mnjEnviar);
El servidor lo tengo creado en Java. Os pongo el código:
Código :
/* * Main.java * * Created on 11 de febrero de 2006, 18:47 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import java.io.*; import java.net.*; //import org.jdom.*; //import org.jdom.output.XMLOutputter; //import org.jdom.input.SAXBuilder; /** * * @author Jose */ public class servidor { public static void main(String[] args) { try { // Muestro la IP del servidor System.out.println("Localhost = " + InetAddress.getLocalHost().toString()); } catch (UnknownHostException e ) { System.out.println("Error al obtener IP"); } // Creo un socket servidor en el puerto 3000 ServerSocket ss = null; try { ss = new ServerSocket(3001); } catch (IOException e) { System.out.println("Error al crear el servidor"); System.exit( -1 ); } String datoEntrada = ""; String datoSalida; while (true) { try { Socket cliente = ss.accept(); // Extraemos los Streams de entrada y de salida DataInputStream entrada = new DataInputStream(cliente.getInputStream()); DataOutputStream salida = new DataOutputStream(cliente.getOutputStream()); System.out.println("Cliente conectado"); for(int i = entrada.read(); i != 0; i = entrada.read()) { datoEntrada += (char)i; //System.out.println("Recibido = " + datoEntrada); } System.out.println("Recibido valor = " + datoEntrada); datoSalida = "Hola desde el servidor !!"; salida.writeChars(datoSalida); entrada.close(); salida.close(); try { cliente.close(); System.out.println("Cliente Cerrado"); } catch (SocketException e2) { System.out.println("Cliente No Cerrado"); } try { ss.close(); System.out.println("Servidor Cerrado"); System.exit(0); } catch (IOException e1) { System.out.println("Error al cerrar el servidor"); System.exit( -1); } } catch (Exception e) { System.out.println(e.toString()); System.out.println("Otro Error"); } } } }
La cosa es que el programita en Flash conecta con el servidor, le envía los datos al servidor, pero a la hora de recibir los datos, me sale esto:
Código :
Servidor = Servidor = H Servidor = Ho Servidor = Hol Servidor = Hola Servidor = Hola Servidor = Hola d Servidor = Hola de Servidor = Hola des Servidor = Hola desd Servidor = Hola desde Servidor = Hola desde Servidor = Hola desde e Servidor = Hola desde el Servidor = Hola desde el Servidor = Hola desde el s Servidor = Hola desde el se Servidor = Hola desde el ser Servidor = Hola desde el serv Servidor = Hola desde el servi Servidor = Hola desde el servid Servidor = Hola desde el servido Servidor = Hola desde el servidor Servidor = Hola desde el servidor Servidor = Hola desde el servidor !
Me gustaría que enviase la cadena de una vez, en vez de caracter a caracter. ¿Es eso posible? En casi afirmativo, ¿qué cosa o cosas tendría que cambiar para que funcionase?
Gracias por adelantado.