Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.176.5] |
|
Сообщ.
#1
,
|
|
|
Присоветуйте, специалисты, как лучше
всего (в смысле быстрее) передать объект graphics (в смысле изображение) по сети. Пробовал и NetworkStream+Socket и .NET Remoting но как-то не получается. |
Сообщ.
#2
,
|
|
|
Это только набросок
Код клиента <br>Bitmap bmp=new Bitmap(100,100);//Размер<br>Graphics g=Graphics.FromImae(bmp);<br><br>g.DrawXXX(...);<br>...<br>...<br>//Рисуем что надо<br><br>NetworkStream ServerConnection="DOMAIN\\COMPUTER";<br>string RemoteAddress;<br>Guid id;<br>Socket skt=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.IP);<br>IPEndPoint iep=new IPEndPoint(IPAddress.Any,8749);<br>skt.Blocking=true;<br>skt.Connect(new IPEndPoint(Dns.Resolve(RemoteAddress).AddressList[0],8749));<br>ServerConnection=new NetworkStream(skt);<br>BinaryFormatter bf=new BinaryFormatter();<br>bf.Serialize(bmp);<br>/// Всё, отправлено<br> Код сервера (мультипоточный) <br>public void ListenerThread()<br>{<br>Socket active,skt=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.IP);<br>skt.Blocking=true;<br>skt.Bind(new IPEndPoint(IPAddress.Any,8749));<br>skt.Listen(10);<br>while(true)<br>{<br>active=skt.Accept();<br>Worker w=new Worker(active);<br>Thread t=new Thread(new ThreadStart(w.Handle));<br>t.Start();<br>}<br>}<br><br>public sealed class Worker<br>{<br>private NetworkStream strm;<br>public Worker(Socket incoming)<br>{<br>strm=new NetworkStream(incoming);<br>}<br>public void Handle()<br>{<br>BinaryFormatter bf=new BinaryFormatter();<br>Console.WriteLine("Wow, i've got somethig!")<br>object o=bf.Deserialize(strm);<br>if(o is Bitmap){<br>Console.WiriteLine("Yo! It's a bitmap");<br>}<br>}<br>}<br><br> |
Сообщ.
#3
,
|
|
|
Понял, но есть проблема: сериализация по сети Bitmap'а
это, наверное, медленно. Нельзя ли записать graphics в поток в формате PNG ? Для меня производительность критична |
Сообщ.
#4
,
|
|
|
Не так, стандартная сериализация - это медленно . Попробуй сам написать форматтер со сжатием.
|