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.
