//================================================================================= #region 构造和析构 public KCPSocket(int bindPort, uint kcpKey, AddressFamily family = AddressFamily.InterNetwork) { m_AddrFamily = family; m_KcpKey = kcpKey; m_ListKcp = new List <KCPProxy>(); m_SystemSocket = new Socket(m_AddrFamily, SocketType.Dgram, ProtocolType.Udp); IPEndPoint ipep = UdpSocket.GetIPEndPointAny(m_AddrFamily, bindPort); m_SystemSocket.Bind(ipep); bindPort = (m_SystemSocket.LocalEndPoint as IPEndPoint).Port; LOG_TAG = "KCPSocket[" + bindPort + "-" + kcpKey + "]"; m_IsRunning = true; m_ThreadRecv = new Thread(Thread_Recv) { IsBackground = true }; m_ThreadRecv.Start(); #if UNITY_EDITOR_WIN uint IOC_IN = 0x80000000; uint IOC_VENDOR = 0x18000000; uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12; m_SystemSocket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null); #endif #if UNITY_EDITOR UnityEditor.EditorApplication.playmodeStateChanged -= OnEditorPlayModeChanged; UnityEditor.EditorApplication.playmodeStateChanged += OnEditorPlayModeChanged; #endif }