Ejemplo n.º 1
0
        public void SendRawPkt(NetBuffer nb)
        {
            //非法判断
            if (mSocket == null)
            {
                IGGDebug.Log("socket is invalid.");
                return;
            }

            // 如果根本就没有连接,那么不用发送了
            if (!this.IsConnected)
            {
                return;
            }


            // 当前还有没发出去的包,为了保证顺序,我们这次也别尝试了,直接插入到Pending列表中
            if (mPendingSendPkt.Count > 0)
            {
                mPendingSendPkt.Add(nb);
            }
            // 尝试发送一次
            else
            {
                // 尝试发送这个数据包
                try
                {
                    int sentBytes = mSocket.Send(nb.Pbuffer, nb.HaveSendBytes, nb.NeedSendBuffSize, SocketFlags.None);

                    // 如果没有完整地把包发送出去
                    if (sentBytes < nb.NeedSendBuffSize)
                    {
                        NetConnectState.SendDataState(false);
                    }
                    else
                    {
                        NetConnectState.SendDataState(true);
                    }
                    nb.CGNetBuffer();
                }
                catch (Exception e)
                {
                    IGGDebug.LogError(e);
                }
            }
        }