回答がもらえなかったので再度質問させていただきます。
書いてみたのですが動きません
通信のプログラムを書くのは初めてなので手順があいまいなのですが何が原因で動かないのか教えていただけませんでしょうか?
サーバー側
c#
1using System; 2using System.IO; 3using System.Net; 4using System.Collections.Generic; 5using System.ComponentModel; 6using System.Data; 7using System.Drawing; 8using System.Linq; 9using System.Text; 10using System.Threading.Tasks; 11using System.Windows.Forms; 12using System.Net.Sockets; 13 14namespace ServerSys 15{ 16 public partial class Form1 : Form 17 { 18 public Form1() 19 { 20 InitializeComponent(); 21 var server = new Server(6666); 22 server.ListenOrder(); 23 } 24 } 25 26 class Server 27 { 28 private IPEndPoint remote; 29 private UdpClient Client { get; set; } 30 private Form FormPer { get; set; } 31 32 public Server(int port) 33 { 34 this.FormPer = new Form(); 35 this.remote = new IPEndPoint(IPAddress.Any, port); 36 this.Client = new UdpClient(new IPEndPoint(IPAddress.Any, port)); 37 } 38 39 public void ListenOrder() 40 { 41 while(true) 42 { 43 var buffer = Client.Receive(ref remote); 44 System.Threading.Thread.Sleep(2000); 45 46 using (var ms = new MemoryStream(buffer)) 47 { 48 Bitmap bm = new Bitmap(ms); 49 this.FormPer.Size = new Size(bm.Width + 10, bm.Height + 20); 50 this.FormPer.BackgroundImage = bm; 51 this.FormPer.Show(); 52 53 ms.Close(); 54 } 55 } 56 } 57 } 58}
クライアント側
c#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.IO; 7using System.Linq; 8using System.Net; 9using System.Net.Sockets; 10using System.Text; 11using System.Threading.Tasks; 12using System.Windows.Forms; 13 14namespace ClientSys 15{ 16 public partial class Form1 : Form 17 { 18 private Timer time; 19 private Client client = new Client(new IPEndPoint(IPAddress.Parse("192.168.0.4"), 6666)); 20 21 public Form1() 22 { 23 InitializeComponent(); 24 25 this.time = new Timer() 26 { 27 Interval = 1000, 28 }; 29 30 this.time.Tick += (sender, e) => 31 { 32 this.client.SendImage(6666); 33 }; 34 } 35 36 private void button1_Click(object sender, EventArgs e) 37 { 38 this.time.Start(); 39 } 40 } 41 42 class Client 43 { 44 private IPEndPoint Remote { get; set; } 45 46 public Client(IPEndPoint iep) 47 { 48 this.Remote = iep; 49 } 50 51 public void SendImage(int port) 52 { 53 using (var client = new UdpClient(port)) 54 { 55 var byteimg = ScreenCapture.CaptureBitmap(); 56 57 client.Connect(this.Remote); 58 client.Send(byteimg, byteimg.Length); 59 client.Close(); 60 } 61 } 62 } 63 64 static class ScreenCapture 65 { 66 public static byte[] CaptureBitmap() 67 { 68 byte[] byteimage; 69 Bitmap bm = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 70 71 using (var mms = new MemoryStream()) 72 { 73 using (var graphics = Graphics.FromImage(bm)) 74 { 75 graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), bm.Size); 76 bm.Save(mms, System.Drawing.Imaging.ImageFormat.Bmp); 77 byteimage = mms.GetBuffer(); 78 } 79 80 mms.Close(); 81 } 82 83 return byteimage; 84 } 85 } 86}
クライアント側では自分の画面をキャプチャし、bitmap型をbyte[]型にして返すプログラムを作り、ボタンを押すとタイマーが起動してサーバーに対して1秒ごとにそれを送るプログラム(を書いている予定)です。
サーバー側では送られてきたbyte[]型をbitmapオブジェクトにし、2秒ごとにフォームに貼り付けるプログラムです。
サーバーのプログラムを動かす際、コンストラクタ内のthis.Clientの行で
型 'System.Net.Sockets.SocketException' のハンドルされていない例外が System.dll で発生しました 追加情報:通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます
というエラーがでるのですがどこがおかしいのか分かりません。
教えていただけないでしょうか。