質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

受付中

c#で画像を送りそれを表示するプログラムが動きません

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

1回答

-2評価

0クリップ

3065閲覧

投稿2016/12/27 06:21

回答がもらえなかったので再度質問させていただきます。
書いてみたのですが動きません
通信のプログラムを書くのは初めてなので手順があいまいなのですが何が原因で動かないのか教えていただけませんでしょうか?

サーバー側

c#

using System; using System.IO; using System.Net; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.Sockets; namespace ServerSys { public partial class Form1 : Form { public Form1() { InitializeComponent(); var server = new Server(6666); server.ListenOrder(); } } class Server { private IPEndPoint remote; private UdpClient Client { get; set; } private Form FormPer { get; set; } public Server(int port) { this.FormPer = new Form(); this.remote = new IPEndPoint(IPAddress.Any, port); this.Client = new UdpClient(new IPEndPoint(IPAddress.Any, port)); } public void ListenOrder() { while(true) { var buffer = Client.Receive(ref remote); System.Threading.Thread.Sleep(2000); using (var ms = new MemoryStream(buffer)) { Bitmap bm = new Bitmap(ms); this.FormPer.Size = new Size(bm.Width + 10, bm.Height + 20); this.FormPer.BackgroundImage = bm; this.FormPer.Show(); ms.Close(); } } } } }

クライアント側

c#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ClientSys { public partial class Form1 : Form { private Timer time; private Client client = new Client(new IPEndPoint(IPAddress.Parse("192.168.0.4"), 6666)); public Form1() { InitializeComponent(); this.time = new Timer() { Interval = 1000, }; this.time.Tick += (sender, e) => { this.client.SendImage(6666); }; } private void button1_Click(object sender, EventArgs e) { this.time.Start(); } } class Client { private IPEndPoint Remote { get; set; } public Client(IPEndPoint iep) { this.Remote = iep; } public void SendImage(int port) { using (var client = new UdpClient(port)) { var byteimg = ScreenCapture.CaptureBitmap(); client.Connect(this.Remote); client.Send(byteimg, byteimg.Length); client.Close(); } } } static class ScreenCapture { public static byte[] CaptureBitmap() { byte[] byteimage; Bitmap bm = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); using (var mms = new MemoryStream()) { using (var graphics = Graphics.FromImage(bm)) { graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), bm.Size); bm.Save(mms, System.Drawing.Imaging.ImageFormat.Bmp); byteimage = mms.GetBuffer(); } mms.Close(); } return byteimage; } } }

クライアント側では自分の画面をキャプチャし、bitmap型をbyte[]型にして返すプログラムを作り、ボタンを押すとタイマーが起動してサーバーに対して1秒ごとにそれを送るプログラム(を書いている予定)です。

サーバー側では送られてきたbyte[]型をbitmapオブジェクトにし、2秒ごとにフォームに貼り付けるプログラムです。

サーバーのプログラムを動かす際、コンストラクタ内のthis.Clientの行で

型 'System.Net.Sockets.SocketException' のハンドルされていない例外が System.dll で発生しました 追加情報:通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます

というエラーがでるのですがどこがおかしいのか分かりません。
教えていただけないでしょうか。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。