| 
 
 Server:  
  using System.Net.Sockets;  using System.Net;  using System.Threading;  using System.Text;  using System;  
public class UDPServer  {  ? ? private Socket server;  ? ? /// <summary>  ? ? /// 接收缓冲区数据  ? ? /// </summary>  ? ? private byte[] data;  ? ? public Action<byte[]> OnMesageCallback;  ? ? public UDPServer(string ip, int port)  ? ? {  ? ? ? ? data = new byte[1024 * 1024*10];  ? ? ? ? server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);  ? ? ? ? server.Bind(new IPEndPoint(IPAddress.Parse(ip), port));  ? ? ? ? ThreadPool.QueueUserWorkItem(ReceiveMessage);  ? ? }  ? ? public void DisConnect()  ? ? ? ? {  ? ? ? ? server?.Shutdown(SocketShutdown.Both);  ? ? ? ? server?.Dispose();  ? ? ? ? }  ? ? private void ReceiveMessage(object obj)  ? ? {  ? ? ? ? while (true)  ? ? ? ? {  ? ? ? ? ? ? int len = server.Receive(data);  ? ? ? ? ? ? if(len>0)  ? ? ? ? ? ? {  ? ? ? ? ? ? ? ? byte[] rec = new byte[len];  ? ? ? ? ? ? ? ? Buffer.BlockCopy(data,0, rec, 0, len);  ? ? ? ? ? ? ? ? OnMesageCallback?.Invoke(rec);  ? ? ? ? ? ? }  ? ? ? ? }  ? ? }  ? ? public void SendMessage(string content, IPEndPoint endPoint)  ? ? {  ? ? ? ? byte[] sed = Encoding.UTF8.GetBytes(content);  ? ? ? ? server.SendTo(sed, endPoint);  ? ? }  }  ?  
ServerManager:  
using System.Collections;  using System.Collections.Generic;  using System.Text;  using UnityEngine;  using UnityEngine.UI;  
public class ServerManager : MonoBehaviour  {  ? ? public GameObject singnature;  ? ? public Transform itemParent;  ? ? private UDPServer server;  ? ? public string ip = "10.19.201.92";  ? ? private byte[] recData;  ? ? private bool isReceived;  ? ? // Start is called before the first frame update  ? ? void Start()  ? ? {  ? ? ? ? server = new UDPServer(ip, 7777);  ? ? ? ? server.OnMesageCallback += OnMessageCallBack;  ? ? }  ? ? void OnDestroy()  ? ? {  ? ? ? ? server?.DisConnect();  ? ? }  ? ? private void OnMessageCallBack(byte[] rec)  ? ? {  ? ? ? ? recData = rec;  ? ? ? ? isReceived = true;  ? ? }  ? ? private void Update()  ? ? {  ? ? ? ? if(isReceived)  ? ? ? ? {  ? ? ? ? ? ? isReceived = false;  ? ? ? ? ? ? Texture2D tex = new Texture2D(500, 500);  ? ? ? ? ? ? tex.LoadImage(recData);  ? ? ? ? ? ? GameObject item = GameObject.Instantiate(singnature, itemParent);  ? ? ? ? ? ? item.GetComponent<RawImage>().texture = tex;  ? ? ? ? }  ? ? }  }  ?  
Client:  
  using System.Net.Sockets;  using System.Net;  using System.Threading;  using System.Text;  using System;  
public class UDPClient  {  ? ? private Socket server;  ? ? /// <summary>  ? ? /// 接收缓冲区数据  ? ? /// </summary>  ? ? private byte[] data;  ? ? public Action<byte[]> OnMesageCallback;  ? ? public UDPClient()  ? ? {  ? ? ? ? data = new byte[1024 * 1024*10];  ? ? ? ? server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);  ? ? ? ? ThreadPool.QueueUserWorkItem(ReceiveMessage);  ? ? }  ? ? public void SendMessage(byte[] sed, IPEndPoint endPoint)  ? ? {  ? ? ? ? server.SendTo(sed, endPoint);  ? ? }  ? ? private void ReceiveMessage(object obj)  ? ? {  ? ? ? ? while (true)  ? ? ? ? {  ? ? ? ? ? ? int len = server.Receive(data);  ? ? ? ? ? ? if (len > 0)  ? ? ? ? ? ? {  ? ? ? ? ? ? ? ? byte[] rec = new byte[len];  ? ? ? ? ? ? ? ? Buffer.BlockCopy(data, 0, rec, 0, len);  ? ? ? ? ? ? ? ? OnMesageCallback?.Invoke(rec);  ? ? ? ? ? ? }  ? ? ? ? }  ? ? }  ? ? public void SendMessage(string content, IPEndPoint endPoint)  ? ? {  ? ? ? ? byte[] sed = Encoding.UTF8.GetBytes(content);  ? ? ? ? server.SendTo(sed, endPoint);  ? ? }  }  
 
UDPManager  
using System.Collections;  using System.Collections.Generic;  using System.Text;  using UnityEngine;  
public class UDPManager : MonoBehaviour  {  ? ? public static UDPManager instance;  ? ? private UDPClient client;  ? ? private void Awake()  ? ? {  ? ? ? ? instance = this;  ? ? }  ? ? // Start is called before the first frame update  ? ? void Start()  ? ? {  ? ? ? ? client = new UDPClient();  ? ? ? ? client.OnMesageCallback += OnMessageCallback;  ? ? }  ? ? private void OnMessageCallback(byte[] rec)  ? ? {  ? ? ? ? string result = Encoding.UTF8.GetString(rec);  ? ? ? ? Debug.Log(result);  ? ? }  ? ? public void Send(string content)  ? ? {  ? ? ? ? client.SendMessage(content, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("10.19.201.92"), 7777));  ? ? }  ? ? public void Send(byte[] content)  ? ? {  ? ? ? ? client.SendMessage(content, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("10.19.201.92"), 7777));  ? ? }  }  ? 
                
        
        
    
 
 |