using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Runtime.Serialization.Formatters.Binary; using System.Threading; using UnityEngine; using UnityEngine.UI; public class GetRemoteImage : MonoBehaviour { private int port; private TcpClient client; private TcpListener server; private NetworkStream mainStream; public bool isImageCanUse; private Thread Listening; private Thread GetImage; public Image image; public Button buttonClose; private System.Drawing.Image local_image; // Use this for initialization void Start() { local_image = System.Drawing.Image.FromFile(Application.dataPath + "/Image/1.jpg"); isImageCanUse = false; port = 50002; client = new TcpClient(); Listening = new Thread(StartListening); GetImage = new Thread(ReceiveImage); server = new TcpListener(IPAddress.Any, port); Listening.Start(); Texture2D texture = new Texture2D(local_image.Width, local_image.Height); System.Drawing.ImageConverter imageConverter = new System.Drawing.ImageConverter(); byte[] imageData = (byte[])imageConverter.ConvertTo(local_image, typeof(byte[])); texture.LoadImage(imageData); image.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.0f, 0.0f)); } // Update is called once per frame void Update() { if (isImageCanUse) { Texture2D texture = new Texture2D(local_image.Width, local_image.Height); System.Drawing.ImageConverter imageConverter = new System.Drawing.ImageConverter(); byte[] imageData = (byte[])imageConverter.ConvertTo(local_image, typeof(byte[])); texture.LoadImage(imageData); image.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); print(1); } } private void StartListening() { while (!client.Connected) { server.Start(); client = server.AcceptTcpClient(); } GetImage.Start(); } private void StopListening() { server.Stop(); client = null; if (Listening.IsAlive) { Listening.Abort(); } if (GetImage.IsAlive) { GetImage.Abort(); } } private void ReceiveImage() { BinaryFormatter binaryFormatter = new BinaryFormatter(); while (client.Connected) { if (client.Available > 0) { mainStream = client.GetStream(); //pictureBox1.Image = (Image)binaryFormatter.Deserialize(mainStream); isImageCanUse = false; local_image = (System.Drawing.Image)binaryFormatter.Deserialize(mainStream); isImageCanUse = true; } } } }