2013-06-06 1 views
3

J'essaie d'utiliser la méthode FromStream de la classe Image pour définir une image reçue par une connexion tcp en utilisant un flux réseau. Ici il y a les deux côtés code:Image.FromStream using networkStream

Serveur:

TcpListener server = new TcpListener(IPAddress.Any, 34567); 
server.Start(); 

TcpClient client = server.AcceptTcpClient(); 
byte[] buffer = new byte[256]; 

int n = 0; 
Console.WriteLine("{0}, {1}", Encoding.ASCII.GetString(buffer, 0, n), client.Client.RemoteEndPoint); 
byte[] img = File.ReadAllBytes(@"C:\Users\Luca\Desktop\video grest\8599929-nessun-segnale.jpg"); 
client.Client.Send(img); 

Client:

TcpClient tcp = new TcpClient("127.0.0.1", 34567); 
NetworkStream stream = tcp.GetStream(); 
MessageBox.Show("fatto"); 
pictureBox1.Image = Image.FromStream(stream); 

Le problème est que le programme client arrête sur la dernière instruction et il ne va pas en avant , et si fermer le serveur (même 30 minutes plus tard), il dit que la connexion a été fermée mais la boîte à images ne montre rien ... Pourquoi?

Merci d'avance.

+0

je ne vois pas le même comportement que vous avez décrit - moi, le serveur quitte immédiatement après l'appel Send(). À ce stade, le client dit que la connexion était fermée. J'ai été capable de résoudre le problème en demandant au serveur d'appeler client.Close() après l'envoi(). –

Répondre

1

Je pense que votre code client

pictureBox1.Image = Image.FromStream(stream); 

attend pour le flux à terminer avant de traiter l'image.

Vous devez fermer le côté serveur socket en utilisant:

client.Close(); 

juste après:

client.Client.Send(img); 
Questions connexes