/// <summary>同步发送数据 /// </summary> /// <param name="socket">The socket.</param> /// <param name="outPacket">The out packet.</param> protected virtual void SendData(ProxySocket socket, OutPacket outPacket) { try { ByteBuffer sendBuf = new ByteBuffer(); FillBytebuf(outPacket, sendBuf); socket.Send(sendBuf.ToByteArray(), 0, sendBuf.Length, SocketFlags.None); outPacket.DateTime = DateTime.Now; if (outPacket.NeedAck()) { outPacket.TimeOut = Utils.Util.GetTimeMillis(DateTime.Now) + QQGlobal.QQ_TIMEOUT_SEND; policy.PushResend(outPacket, this.Name); } } catch (Exception e) { policy.OnNetworkError(e); } }
/// <summary> /// </summary> /// <param name="ar">The ar.</param> protected virtual void EndSendData(IAsyncResult ar) { OutPacket outPacket = (OutPacket)ar.AsyncState; try { outPacket.DateTime = DateTime.Now; int sendCount = socket.EndSend(ar); if (outPacket.NeedAck()) { outPacket.TimeOut = Utils.Util.GetTimeMillis(DateTime.Now) + QQGlobal.QQ_TIMEOUT_SEND; policy.PushResend(outPacket, this.Name); } //outPacketQueue.Dequeue(); } catch (Exception e) { policy.OnNetworkError(e); } }