/// <summary> /// 发送 /// </summary> public void Send() { // try { PacketBase pb; if (this.m_cSendQueue.Dequeue(out pb)) { if (this.m_cSocket == null) { throw new Exception("The socket is null."); } //MemoryStream ms = new MemoryStream(); //BinaryFormatter bf = new BinaryFormatter(); //byte[] buffer = null; //bf.Serialize(ms, pb); //buffer = ms.ToArray(); byte[] buffer = null; StreamBuffer sb = new StreamBuffer(); pb.Write(sb); buffer = sb.m_lstBuffer; if (buffer == null) { throw new Exception("The the send buffer is null."); } buffer = Packing.PackingEncode(buffer, pb.GetSize()); SocketAsyncEventArgs e = new SocketAsyncEventArgs(); e.Completed += this.SendCompleteCallBack; e.SetBuffer(buffer, 0, Packing.GetPacketHeadSize() + pb.GetSize()); bool done = this.m_cSocket.SendAsync(e); if (!done) { SendProcess(e); } //this.m_cSocket.BeginSend(buffer, 0, Packing.GetPacketHeadSize() + pb.GetSize(), // SocketFlags.DontRoute, new AsyncCallback(SendCallBack), this.m_cSocket); } } catch (Exception ee) { WriteFiles.WritFile.Log(LogerType.ERROR, ee.ToString()); DisConnect(); } }