Honik
18-08-2010, 22:12
Salve a tutti..
ho questo programmino Client/Server e uso UDP per l'invio di immagini.. la cattura da cam la effettuo con aforge.. metto i frame in una coda ed invio!! Vi faccio vedere il codice Server
for (; ; )
{
if (coda.Count > 0)
{
try
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
byte[] data;
img = coda.Dequeue();
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Position = 0;
data = new byte[stream.Length];
stream.Read(data, 0, Convert.ToInt32(stream.Length));
stream.Close();
IPEndPoint ep = new IPEndPoint(broadcast, port);
s.SendTo(data, ep);
} }
catch (Exception e)
{
}
}
}
lato client invece
listener = new UdpClient(port);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
try
{
while (true)
{
byte[] b = listener.Receive(ref groupEP);
MemoryStream mstream = new MemoryStream(b);
Bitmap bmm = new Bitmap(mstream);
bmm = new Bitmap(bmm, new Size(320, 240));
pictureBox1.Image = bmm;
}
}
catch (Exception e)
{
}
finally
{
listener.Close();
}
non sono per niente esperto del campo.. mi son servito degli esempi trovati in rete e su msdn!
Perchè vedo le immagini non fluide? alcune a scatti.. altre volte si blocca e mi arrivano tutte d'un colpo.. dove sbaglio?
grazie
ho questo programmino Client/Server e uso UDP per l'invio di immagini.. la cattura da cam la effettuo con aforge.. metto i frame in una coda ed invio!! Vi faccio vedere il codice Server
for (; ; )
{
if (coda.Count > 0)
{
try
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
byte[] data;
img = coda.Dequeue();
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Position = 0;
data = new byte[stream.Length];
stream.Read(data, 0, Convert.ToInt32(stream.Length));
stream.Close();
IPEndPoint ep = new IPEndPoint(broadcast, port);
s.SendTo(data, ep);
} }
catch (Exception e)
{
}
}
}
lato client invece
listener = new UdpClient(port);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
try
{
while (true)
{
byte[] b = listener.Receive(ref groupEP);
MemoryStream mstream = new MemoryStream(b);
Bitmap bmm = new Bitmap(mstream);
bmm = new Bitmap(bmm, new Size(320, 240));
pictureBox1.Image = bmm;
}
}
catch (Exception e)
{
}
finally
{
listener.Close();
}
non sono per niente esperto del campo.. mi son servito degli esempi trovati in rete e su msdn!
Perchè vedo le immagini non fluide? alcune a scatti.. altre volte si blocca e mi arrivano tutte d'un colpo.. dove sbaglio?
grazie