Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 05 Mar, 2005 2:54 am Asunto: Transferencia de Imagenes Via Socket |
|
|
bien en esta pagina existen varios ejemplos
http://forum.hardware.fr/hardwarefr/Programmation/Transfert-d-images-via-un-socket--sujet-62128-1.htm
y el que mas me gusto por lo simple, es el siguiente
Para Enviar
| Código: | void __fastcall TForm1::CliSendClick(TObject *Sender)
{
if(ClientSocket1->Active) {
TMemoryStream *stream = new TMemoryStream();
Image1->Picture->Bitmap->SaveToStream(stream);
ClientSocket1->Socket->SendBuf(stream->Memory, stream->Size);
delete stream;
}
} |
y para recibir
| Código: | void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
TMemoryStream *stream = new TMemoryStream();
char Buffer[5000];
int Count;
while (Count = ServerSocket1->Socket->Connections[ComboBox1->ItemIndex]->ReceiveBuf(Buffer, sizeof(Buffer)) != -1) {
stream->Write(Buffer, sizeof(Buffer));
Sleep(1000);
}
stream->Position = 0;
Image2->Picture->Bitmap->LoadFromStream(stream);
delete stream;
} |
Otro de los Ejemplos
| Código: | //Pour l'envoi :
void __fastcall TForm1::SrvSendClick(TObject *Sender)
{
if(ServerSocket1->Active) {
TMemoryStream *stream = new TMemoryStream();
Image1->Picture->Bitmap->SaveToStream(stream);
//Image2->Picture->Bitmap->LoadFromStream(stream); Au passage, ça ça fonctionne, ce qui signifie que l'image est effectivement contenue dans stream.
ClientSocket1->Socket->SendBuf(stream, sizeof(stream));
stream->Free();
}
}
//Pour la réception :
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
TMemoryStream *stream = new TMemoryStream();
ServerSocket1->Socket->Connections[0]->ReceiveBuf(stream, sizeof(stream));
stream->Position = 0; //Pour permettre de lire depuis le début de la variable, ce que j'avais omis au départ et qui m'a valu des heures perdues...
Image2->Picture->Bitmap->LoadFromStream(stream); //Chargement de stream pour l'afficher ; etlà, rien ne se passe...
stream->Free();
ShowMessage("Reçu !"); //J'affiche une MessageBox pour être sûr que l'événement à bien lieu, ce qui n'est pas le cas si j'utilise SendStream du côté client...
}
|
_________________
 |
|