■35731 / inTopicNo.9) |
Re[1]: 画像の転送について |
□投稿者/ も (74回)-(2009/05/13(Wed) 02:00:24)
|
■No35628 (Bob さん) に返信 > 現在、デスクトップの一部をキャプチャし > それを他のPCへ転送するというソフトを作成しています。 > キャプチャ自体は簡単に終わったのですが、転送をどうすればいいか分かりません。 > 流れとしては > ソフト自体にクライアントモードとサーバモードの2パターン用意し > クライアントの方は閲覧を、サーバの方は送信をする事になります。 > サーバの方で相手に送りたいデスクトップの一部を範囲指定し、クライアントの方では送ってもらいたいサーバ側のIPを指定して > ...
2008ということで,きっと .net framework 3.5 を使っているとおもいます. クラサバ型なら System.Net.HttpListener と System.Net.WebRequest でHTTP鯖とクライアントが一発でできます. ついでにMIMEでPNGやらBMPやらを扱えますのでいちいちプロトコルを考えなくてもOKです.
ためしに作ってみたのですが,長すぎるのでアップローダにおいておきました. ただ,クライアント個別に「デスクトップの一部を…」のようなことはしていません. http://u8.getuploader.com/vipprog/download/17/WindowsFormsApplication4.zip
キモの部分だけ書きます.
// クライアント側 WebRequest req = WebRequest.Create("http://" + _remote_host + ":" + DEFAULT_PORT + "/"); WebResponse res = req.GetResponse(); Image res_image = Image.FromStream(res.GetResponseStream()); res.GetResponseStream().Close();
using(Graphics g = _control_to_draw.CreateGraphics()) { g.DrawImage(res_image, 0, 0, _control_to_draw.Width, _control_to_draw.Height); }
// サーバ側 private void onTimer(..) { _captured_image = スクリーンキャプチャした画像の内部形式がPNGのbyte[] }
.....
HttpListenerContext ctx = _listener.GetContext(); ctx.Response.OutputStream.Write(_captured_image, 0, _captured_image.Length); ctx.Response.OutputStream.Flush(); ctx.Response.OutputStream.Close();
|
|