using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void myDelegate(string str); private void Form1_Load(object sender, EventArgs e) { Thread myThread; myThread = new Thread(new ThreadStart(MyServiceLoop)); myThread.IsBackground = true; myThread.Start(); } private void MyServiceLoop() { Socket myListenSocket; Socket mySessionSocket; NetworkStream myStream; StreamReader myReader; StreamWriter myWriter; BinaryReader myBReader; BinaryWriter myBWriter; IPAddress myAddress; int myPort; EndPoint myEndPoint; String myRecvData; int size; int count; myListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); myPrint("ソケット作成"); myAddress = IPAddress.Any; myPort = 55555; myEndPoint = new IPEndPoint(myAddress, myPort); myListenSocket.Bind(myEndPoint); myPrint("バインドしました"); myListenSocket.Listen(10); myPrint("リッスン開始"); myPrint(""); while (true) { mySessionSocket = myListenSocket.Accept(); myPrint("誰かが接続しました"); myStream = new NetworkStream(mySessionSocket); myReader = new StreamReader(myStream, Encoding.UTF8); myWriter = new StreamWriter(myStream, Encoding.UTF8); myBReader = new BinaryReader(myStream); myBWriter = new BinaryWriter(myStream); myRecvData = myReader.ReadLine(); myPrint("受信:" + myRecvData); size = Convert.ToInt16(myRecvData); byte[] b = new byte[size]; for (count = 0; count < size; count++) { b[count] = myBReader.ReadByte(); } ImageConverter imgconv = new ImageConverter(); Image img = (Image)imgconv.ConvertFrom(b); pictureBox1.Image = img; } } private void myPrint(string str) { if (this.listBox1.InvokeRequired) { myDelegate d = new myDelegate(myPrint); this.Invoke(d, new object[] { str }); } else { listBox1.Items.Add(str); listBox1.TopIndex = listBox1.Items.Count - 1; listBox1.Refresh(); } } } }