Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/03/2008, 03:00
joaquinjct
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Envio de video de pc a pc

Buenas.

Este es el metodo del servidor. Un hilo que cada cierto tiempo ejecuta este metodo.-

public void getImage(){
try{

/*COPIA IMAGEN*/
Image imgn = webcam.buffer;
/*ALMACENA IMAGEN EN BUFFER CON FORMATO JPEG*/
System.IO.MemoryStream buffer = new System.IO.MemoryStream();
imgn.Save(buffer, ImageFormat.Jpeg);
Byte[] size = new Byte[5];
size = System.Text.Encoding.ASCII.GetBytes(buffer.Capacit y.ToString());
/*ENVIA TAMAÑO DE LA IMAGEN*/
stream.Write(size, 0, size.Length);
/*ENVIO IMAGEN*/
Byte[] msg = new Byte[buffer.Capacity];
msg = buffer.GetBuffer();
stream.Write(msg, 0, msg.Length);
stream.Flush();
}catch (SocketException ex){
}catch (System.IO.IOException e) { }
webcam.activo = false;
}

Este es es metodo del cliente.-

public void receive()
{
Byte[] respuesta = new Byte[5];
while (true)
{
/*RECIBE TAMAÑO DE LA IMAGEN*/
respuesta.Initialize();
Int32 lng=stream.Read(respuesta, 0, respuesta.Length);
MessageBox.Show(System.Text.Encoding.ASCII.GetStri ng(respuesta, 0, lng));
int size = System.Convert.ToUInt16(System.Text.Encoding.ASCII .GetString(respuesta, 0, lng));
/*LEE IMAGEN*/
Byte[] data = new Byte[size];
Int32 bytes = stream.Read(data, 0, data.Length);
System.IO.MemoryStream buffer = new System.IO.MemoryStream(data);
Pbx.Image = System.Drawing.Image.FromStream(buffer);
stream.Flush();
}

}

Tal y como esta aqui funciona, pero tengo que ir pulsando sobre MessageBox cada vez que quiero que se actualice la imagen. Si quito MessageBox no funciona.
Hice una version en la que el cliente enviaba mensajes de confirmacion cada vez que le llegaba un mensaje del servidor por si el problema era de sincronizacion entre ambos, pero tenia el mismo problema.

Gracias.