public CSocket() { mSocketSink = null; mSocket = new CustomSocket { SuccessCallback = onConnected, DisconnectCallback = onDisconnected, DataRecivedCallback = onMessageReceived, ExceptionCallback = onExceptionCaught }; }
//关闭 public void Close() { // UnityEngine.Debug.LogWarningFormat("Close UDP socket:"); Disconnect(); //释放线程 if (null != m_ThreadSend) { m_ThreadSend.Abort(); m_ThreadSend = null; } //释放发包内存池 if (null != m_oSendDataSwap) { m_oSendDataSwap.Release(); m_oSendDataSwap = null; } //释放udp客户端 if (null != mUdpClient) { mUdpClient.Close(); mUdpClient = null; } //释放发送队列 if (null != m_QueueToSend) { m_QueueToSend.Clear(); m_QueueToSend = null; } //释放接收队列 if (null != mRecvQueue) { mRecvQueue.Clear(); mRecvQueue = null; } //重置状态 reset_state(); //清空缓存 packbuffer = null; recievebuffer = null; mHandshakePack = null; mHeartPack = null; mDisconnectPack = null; //清空回调 m_socketSink = null; }
//关闭 public void Close() { // UnityEngine.Debug.LogWarningFormat("Close socket:"); Disconnect(); lock (m_QueueToSend.SyncRoot) { m_QueueToSend.Clear(); Monitor.Pulse(m_QueueToSend.SyncRoot); } if (m_ThreadSend != null) { m_ThreadSend.Abort(); m_ThreadSend = null; } if (m_ThreadReceive != null) { m_ThreadReceive.Abort(); m_ThreadReceive = null; } if (m_Connection != null) { try { m_Connection.Close(); } catch (SocketException e) { UnityEngine.Debug.LogErrorFormat("Close error:{0}", e.ToString()); } m_Connection = null; } m_socketSink = null; m_DecompressData = null; }
public void setSocketSink(ISocketSink pISocketSink) { mSocketSink = pISocketSink; }
//设置上层回调 public void SetSink(ISocketSink sink) { m_socketSink = sink; }