ralf9
Messages postés14Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention14 mars 2010
-
14 mars 2010 à 15:50
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
14 mars 2010 à 17:05
bonjour,
j'ai un soucis avec la quantité d'information a envoyer, en effet, je voudrais transmettre une image d'un pictureBox vers un autre pictureBox sur une application distante, mais j'ai eu un problème, mon image arrive mais pas complète ! j'ai déclaré un tableau de byte qui contiendra mon image mais avec une taille bien limitée, c'est a cause de ca et je ne peux pas donner une taille très grande a ce tableau car ca bugue par la suite qu'est ce que je peux faire ?
voici mon code :
serveur :
// c'est juste le thread que j'ai donné
public void att_serveur()
{
s.Start();
c2 = s.AcceptTcpClient();
Invoke(new Action(delegate { label1.Text = "Connecté ..."; }));
do
{
str2 = c2.GetStream();
b2 = new byte[1200]; // déjà comme ca et ca se bloque !
MessageBox.Show("bloque");
if (str2.Read(b2, 0, b2.Length) != -1) //vérifier s'il ya quelque chose dans le flux de données
{
string msg = Encoding.ASCII.GetString(b2, 0, b2.Length);
if (msg.IndexOf("txt") == 0) // marqueur pour différencier entre texte et image
{
Invoke(new Action(delegate { textBox1.Text = msg.Remove(0, 3); }));
}
else
{
img = new Bitmap(new MemoryStream(b2));
Invoke(new Action(delegate
{
pictureBox_img.Image = img;
}));
}
}
} while (true);
}
client :
/**************** se connecter au serveur PDA **************/
private void menuItem2_Click(object sender, EventArgs e)
{
try
{
c1 = new TcpClient("192.168.2.102", 12377);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/****************** Ouvrir Image **********************/
private void pictureBox1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Files image JPEG (*.jpg)|*.jpg";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
img = new Bitmap(openFileDialog1.FileName);
pictureBox_img.Image = img;
ms = new MemoryStream();
pictureBox_img.Image.Save(ms, ImageFormat.Jpeg);
b = ms.GetBuffer(); //convertir le contenu de l'image en bytes
ms.Close();
}
}
/******************** envoyer image ************************/
private void button_sendImage_Click(object sender, EventArgs e)
{
str1.Write(b, 0, b.Length);
}
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 14 mars 2010 à 17:05
Bonsoir
La taille du buffer dans un networkstream est limitée, je crois par défaut à 1024 octets
si ton message est plus grand, il faut faire un boucle lors de la réception