Esempio n. 1
0
    //private void ImcomingThreadFunc()
    //{
    //    do
    //    {
    //        DoIncoming();
    //        System.Threading.Thread.Sleep(1);
    //    } while (IsWorking_);
    //}

    public void DoOutgoing()
    {
        if (!CanFlush_)
        {
            return;
        }
        //lock (Socket_)
        //{
        if (!Socket_.Connected)
        {
            return;
        }
        if (OutgoingBuffer_.Length != 0)
        {
            //发送
            if (Socket_.Poll(0, System.Net.Sockets.SelectMode.SelectWrite))
            {
                try
                {
                    int sended = Socket_.Send(OutgoingBuffer_.Memory, OutgoingBuffer_.RdPtr(), OutgoingBuffer_.Length, System.Net.Sockets.SocketFlags.None);
                    OutgoingBuffer_.RdPtr(sended);
                    OutgoingBuffer_.Crunch();
                    TotalOutgoing_ += sended;

                    CanFlush_ = false;
                }
                catch (System.Net.Sockets.SocketException se)
                {
                    ClientLog.Instance.Log("Exception at DoOutgoing" + se.ErrorCode);
                    LastError_ = se.ErrorCode;
                }
            }
        }
        //}
    }
Esempio n. 2
0
    public bool Reset()
    {
        if (!IsWorking_)
        {
            return(true);
        }

        bool hasData = false;

        while (IsConneted && LastError == 0)
        {
            if (Socket_.Poll(0, System.Net.Sockets.SelectMode.SelectRead))
            {
                try
                {
                    if (0 >= Socket_.Receive(IncomingBuffer_.Memory, IncomingBuffer_.WrPtr(), IncomingBuffer_.Space, System.Net.Sockets.SocketFlags.None))
                    {
                        break;
                    }
                    else
                    {
                        hasData = true;
                    }
                }
                catch (System.Net.Sockets.SocketException se)
                {
                    ClientLog.Instance.Log("Exception at Reset" + se.ErrorCode);
                    LastError_ = se.ErrorCode;
                    break;
                }
            }
            else
            {
                break;
            }
        }
        IncomingBuffer_.Reset();
        OutgoingBuffer_.Reset();
        return(hasData);
    }