Пример #1
0
        private void m_DeleteEventFiring(FIRING_D_C_F firType, IDeleteEventArgs stateArgs, string funcionTag)
        {
            switch (firType)
            {
            case FIRING_D_C_F.DEFAULT:

                break;

            case FIRING_D_C_F.FIR_COMPLETE:
                DebugQy.LogTag(funcionTag, firType.ToString(), "#59A7CEFF");
                if (DeleteCompleteEvent != null)
                {
                    IDeleteEventArgs _args = stateArgs as IDeleteEventArgs;
                    DeleteCompleteEvent(this, _args);
                }
                break;

            case FIRING_D_C_F.FIR_FAILED:
                DebugQy.LogTag(funcionTag, firType.ToString() + stateArgs.ErrMessage, "#BB7979FF");
                if (DeleteFailedEvent != null)
                {
                    IDeleteEventArgs _args = stateArgs as IDeleteEventArgs;
                    DeleteFailedEvent(this, _args);
                }
                break;

            default:

                break;
            }
        }
Пример #2
0
        private void m_SendMessageEventFiring(FIRING_D_C_F firType, ISocketSndEventArgs sendArgs, string funcionTag)
        {
            switch (firType)
            {
            case FIRING_D_C_F.DEFAULT:
                DebugQy.LogTag(funcionTag, "buffer has send . please wait callback.", "#3487E8FF");
                break;

            case FIRING_D_C_F.FIR_COMPLETE:
                DebugQy.LogTag(funcionTag, firType.ToString(), "#3487E8FF");
                if (AnsyncSendMsg_Complete_Event != null)
                {
                    ISocketSndEventArgs _args = sendArgs;
                    AnsyncSendMsg_Complete_Event(this, _args);
                }

                break;

            case FIRING_D_C_F.FIR_FAILED:
                DebugQy.LogTag(funcionTag, firType.ToString() + sendArgs.ErrMessage, "#BB7979FF");
                if (AnsyncSendMsg_Failed_Event != null)
                {
                    ISocketSndEventArgs _args = sendArgs;
                    AnsyncSendMsg_Failed_Event(this, _args);
                }
                break;

            default:

                break;
            }
        }
Пример #3
0
        private void m_ReceiveMessageEventFiring(FIRING_D_C_F firType, ISocketRecEventArgs recArgs, string funcionTag)
        {
            switch (firType)
            {
            case FIRING_D_C_F.DEFAULT:
                DebugQy.LogTag(funcionTag, "begin receive . please wait callback.", "#3C9553FF");
                break;

            case FIRING_D_C_F.FIR_COMPLETE:
                DebugQy.LogTag(funcionTag, firType.ToString(), "#3C9553FF");
                if (AnsyncRecMsg_Complete_Event != null)
                {
                    ISocketRecEventArgs _args = recArgs;
                    AnsyncRecMsg_Complete_Event(this, _args);
                }
                break;

            case FIRING_D_C_F.FIR_FAILED:
                DebugQy.LogTag(funcionTag, firType.ToString() + recArgs.ErrMessage, "#BB7979FF");
                if (AnsyncRecMsg_Failed_Event != null)
                {
                    ISocketRecEventArgs _args = recArgs;
                    AnsyncRecMsg_Failed_Event(this, _args);
                }
                break;

            default:

                break;
            }
        }
Пример #4
0
        private void m_ConnectEventFiring(FIRING_D_C_F firType, ISocketConEventArgs conArgs, string funcionTag)
        {
            switch (firType)
            {
            case FIRING_D_C_F.DEFAULT:

                break;

            case FIRING_D_C_F.FIR_COMPLETE:
                DebugQy.LogTag(funcionTag, firType.ToString(), "#59A7CEFF");
                if (AnsyncConnectTo_Complete_Event != null)
                {
                    ISocketConEventArgs _args = conArgs;
                    AnsyncConnectTo_Complete_Event(this, _args);
                }
                break;

            case FIRING_D_C_F.FIR_FAILED:
                DebugQy.LogTag(funcionTag, firType.ToString() + conArgs.ErrMessage, "#BB7979FF");
                if (AnsyncConnectTo_Failed_Event != null)
                {
                    ISocketConEventArgs _args = conArgs;
                    AnsyncConnectTo_Failed_Event(this, conArgs);
                }
                break;

            default:

                break;
            }
        }
Пример #5
0
        private void m_ConnectCallBack(IAsyncResult asyncResult)
        {
            FIRING_D_C_F        _firEventType = FIRING_D_C_F.DEFAULT;
            string              errorMessage  = string.Empty;
            SocketAnsynParam    _ansynParam   = asyncResult.AsyncState as SocketAnsynParam;
            ISocketConEventArgs _conEventArgs = _ansynParam.transEventArgs as ISocketConEventArgs;

            try
            {
                _ansynParam.workSocket.EndConnect(asyncResult);
                errorMessage  = "√√√ no mistake √√√";
                _firEventType = FIRING_D_C_F.FIR_COMPLETE;
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "×××  ArgumentNullException  ×××:"
                               + " asyncResult 为 null。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "×××  ArgumentException  ×××:"
                               + " BeginConnect 方法调用未返回 asyncResult。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SocketException ee)
            {
                errorMessage = "×××  SocketException  ×××:"
                               + " 试图访问套接字时发生错误。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ObjectDisposedException ee)
            {
                errorMessage = "×××  ObjectDisposedException  ×××:"
                               + "Socket 已关闭。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (InvalidOperationException ee)
            {
                errorMessage = "×××  InvalidOperationException  ×××:"
                               + "先前曾为异步连接调用过 EndConnect。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "×××  Unknown exception  ××× :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            DebugQy.LogTag("<<<<<<< CON ENP IN CLIENT >>>>>>>", "*-*-*-*-*[ out ]*-*-*-*-*");
            _conEventArgs.SetErrMessage(errorMessage);
            m_ConnectEventFiring(_firEventType, _conEventArgs, "m_ConnectCallBack");
        }
Пример #6
0
        private void m_Post(byte[] postBuffer)
        {
            HttpWebPostArgs _postEventArgs = new HttpWebPostArgs();
            string          errorMessage   = string.Empty;
            FIRING_D_C_F    _firEventType  = FIRING_D_C_F.DEFAULT;

            DebugQy.Log("m_Post(): buffer message in.");
            m_httpRequest.KeepAlive = false;
            m_httpRequest.Method    = "POST";
            //m_httpRequest.ContentType = "application/x-www-form-urlencoded";
            m_httpRequest.ContentType = "application/json";
            Stream _writer;

            _writer = m_httpRequest.GetRequestStream(); //任何尝试访问该方法时,不在子代类中重写该方法时:会引发NotImplementedException

            try
            {
                _writer.Write(postBuffer, 0, postBuffer.Length);
                _writer.Close();
                DebugQy.Log("m_Post(): buffer has posted.");
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "---  ArgumentNullException  --- :"
                               + "buffer is null"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentOutOfRangeException ee)
            {
                errorMessage = "---  ArgumentOutOfRangeException  --- :"
                               + "offset 或 count 为负。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "---  ArgumentException  --- :"
                               + "总和 offset 和 count 大于缓冲区长度。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (IOException ee)
            {
                errorMessage = "---  IOException  --- :"
                               + "将出现 I / O 错误,如找不到指定的文件。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (NotSupportedException ee)
            {
                errorMessage = "---  NotSupportedException  --- :"
                               + "流不支持写入。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "---  Unknown exception  --- :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            if (_firEventType == FIRING_D_C_F.FIR_FAILED)
            {
                _postEventArgs.SetErrMessage(errorMessage);
                m_PostEventFiring(_firEventType, _postEventArgs, "m_Post");
                return;
            }
            HttpWebResponse _httpResponse   = m_httpRequest.GetResponse() as HttpWebResponse;
            Stream          _responseStream = _httpResponse.GetResponseStream();

            try
            {
                ///TODO:2016/12/19这句话报错,考虑后期流媒体怎么处理!!!!!
                ///------------解决方案:转码一次,后期考虑字节的直接操作,性能 性能 性能!!!;
                /// int length = (int)_responseStream.Length;
                StreamReader _reader = new StreamReader(_responseStream);
                string       aa      = _reader.ReadToEnd();
                byte[]       buffer  = Encoding.UTF8.GetBytes(aa);
                DebugQy.Log("RquestMessage buffer length :" + buffer.Length);
                _responseStream.Close();
                _postEventArgs.SetBuffer(buffer);
                _firEventType = FIRING_D_C_F.FIR_COMPLETE;
                errorMessage  = "---  no mistake  ---";
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "---  ArgumentNullException  --- :"
                               + "buffer is null"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentOutOfRangeException ee)
            {
                errorMessage = "---  ArgumentOutOfRangeException  --- :"
                               + "offset 或 count 为负。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "---  ArgumentException  --- :"
                               + "总和 offset 和 count 大于缓冲区长度。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (IOException ee)
            {
                errorMessage = "---  IOException  --- :"
                               + "将出现 I / O 错误,如找不到指定的文件。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (NotSupportedException ee)
            {
                errorMessage = "---  NotSupportedException  --- :"
                               + "流不支持读取。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "---  Unknown exception  --- :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            _postEventArgs.SetErrMessage(errorMessage);
            m_PostEventFiring(_firEventType, _postEventArgs, "m_ReceiveMsgCallBack");
        }
Пример #7
0
        private void m_ReceiveMsgCallBack(IAsyncResult asyncResult)
        {
            DebugQy.LogTag("m_ReceiveMsgCallBack", " ---- in ---- ", "#3C9553FF");
            FIRING_D_C_F        firEventType = FIRING_D_C_F.DEFAULT;
            string              errorMessage = string.Empty;
            SocketAnsynParam    ansynParam   = asyncResult.AsyncState as SocketAnsynParam;
            ISocketRecEventArgs recEventArgs = ansynParam.transEventArgs as ISocketRecEventArgs;

            try
            {
                SocketError socketErrorCode;
                int         realRevbufSize = ansynParam.workSocket.EndReceive(asyncResult, out socketErrorCode);
                if (socketErrorCode != SocketError.Success)
                {
                    DebugQy.LogWarning("[RECV MESAGE] Socket error : [" + socketErrorCode.ToString() + "] ,Check it !!!!!!!");
                }

                if (realRevbufSize == 0)
                {
                    errorMessage = "×××  receive bytes size is '0'  ××× :"
                                   + "远程链接已调用shutDown\\close.";
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
                else
                {
                    DebugQy.LogTag("m_ReceiveMsgCallBack", "Current receive buffer length :[" + realRevbufSize + "]", "#3C9553FF");
                    byte[] bytes = new byte[realRevbufSize];
                    Buffer.BlockCopy(m_tempRecvBuffer, 0, bytes, 0, realRevbufSize);
                    m_lastBuffer.AddRange(bytes);

                    if (m_lastBuffer.Count >= recEventArgs.NeedRecvBufferSize)
                    {
                        DebugQy.LogTag("m_ReceiveMsgCallBack", "Real 'RECV' buffer > needSize   NeedRecLength :[" + recEventArgs.NeedRecvBufferSize + "]", "#3C9553FF");
                        DebugQy.LogTag("m_ReceiveMsgCallBack", "Real 'RECV' buffer > needSize   RealRecLengrh :[" + m_lastBuffer.Count + "]", "#3C9553FF");
                        byte[] buffer = new byte[recEventArgs.NeedRecvBufferSize];
                        m_lastBuffer.CopyTo(0, buffer, 0, recEventArgs.NeedRecvBufferSize);
                        m_lastBuffer.RemoveRange(0, recEventArgs.NeedRecvBufferSize);
                        recEventArgs.SetBuffer(buffer);
                        errorMessage = "√√√ no mistake √√√ ";
                        firEventType = FIRING_D_C_F.FIR_COMPLETE;
                    }
                    else if (m_lastBuffer.Count < recEventArgs.NeedRecvBufferSize)
                    {
                        DebugQy.LogTag("m_ReceiveMsgCallBack", "Real 'RECV' buffer < needSize   NeedRecLength :[" + recEventArgs.NeedRecvBufferSize + "]", "#3C9553FF");
                        DebugQy.LogTag("m_ReceiveMsgCallBack", "Real 'RECV' buffer < needSize   RealRecLengrh :[" + m_lastBuffer.Count + "]", "#3C9553FF");
                        m_ReceiveMessage(ansynParam);
                        return;
                    }
                }
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "×××  ArgumentNullException  ×××:"
                               + "asyncResult 为 null。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "×××  ArgumentException  ×××:"
                               + "方法调用后未返回 asyncResult。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ObjectDisposedException ee)
            {
                errorMessage = "×××  ObjectDisposedException  ×××:"
                               + "Socket 已关闭。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (InvalidOperationException ee)
            {
                errorMessage = "×××  InvalidOperationException  ×××:"
                               + "先前曾为异步读取调用过 EndReceive。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SocketException ee)
            {
                errorMessage = "×××  SocketException  ×××:"
                               + " 试图访问套接字时发生错误。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "×××  Unknown exception  ××× :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            DebugQy.LogTag("<<<<<<< REV MSG IN CLIENT <<<<<<<", "↑↑↑↑↑↑↑ [ out ][" + recEventArgs.Tag + ":" + recEventArgs.NeedRecvBufferSize + "]↑↑↑↑↑↑↑ ", "#3C9553FF");
            recEventArgs.SetErrMessage(errorMessage);
            m_ReceiveMessageEventFiring(firEventType, recEventArgs, "m_ReceiveMsgCallBack");
        }
Пример #8
0
        private void m_ReceiveMessage(SocketAnsynParam stateParam, SocketFlags flags = SocketFlags.None)
        {
            ISocketRecEventArgs recvEventArgs = stateParam.transEventArgs as ISocketRecEventArgs;

            string       errorMessage = string.Empty;
            FIRING_D_C_F firEventType = FIRING_D_C_F.DEFAULT;

            if (m_lastBuffer.Count >= recvEventArgs.NeedRecvBufferSize)              //当上一次剩余的缓存数据足够本次使用时
            {
                DebugQy.LogTag("m_ReceiveMessage", "need buffer size :[" + recvEventArgs.NeedRecvBufferSize + "]", "#3C9553FF");
                DebugQy.LogTag("m_ReceiveMessage", "last buffer length :[" + m_lastBuffer.Count + "]", "#3C9553FF");
                DebugQy.LogTag("m_ReceiveMessage", "so dont need begin receive .", "#3C9553FF");
                byte[] buffer = new byte[recvEventArgs.NeedRecvBufferSize];
                m_lastBuffer.CopyTo(0, buffer, 0, recvEventArgs.NeedRecvBufferSize);
                m_lastBuffer.RemoveRange(0, recvEventArgs.NeedRecvBufferSize);
                recvEventArgs.SetBuffer(buffer);
                errorMessage = "√√√ no mistake √√√ ";
                firEventType = FIRING_D_C_F.FIR_COMPLETE;
            }
            else
            {
                try
                {
                    SocketError socketErrorCode;
                    m_clientSocket.BeginReceive(m_tempRecvBuffer,
                                                0,
                                                m_tempRecvBuffer.Length,
                                                flags,
                                                out socketErrorCode,
                                                new AsyncCallback(m_ReceiveMsgCallBack),
                                                stateParam
                                                );
                    if (socketErrorCode != SocketError.Success)
                    {
                        DebugQy.LogWarning("[RECV MESAGE] Socket error : [" + socketErrorCode.ToString() + "] ,Check it !!!!!!!");
                    }
                }
                catch (ArgumentNullException ee)
                {
                    errorMessage = "×××  ArgumentNullException  ×××:"
                                   + "buffers 为 null。"
                                   + ee.Message;
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
                catch (SocketException ee)
                {
                    errorMessage = "×××  SocketException  ×××:"
                                   + "试图访问套接字时发生错误。"
                                   + ee.Message;
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
                catch (ObjectDisposedException ee)
                {
                    errorMessage = "×××  ObjectDisposedException  ×××:"
                                   + "Socket 已关闭。"
                                   + ee.Message;
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
                catch (ArgumentOutOfRangeException ee)
                {
                    errorMessage = "×××  ArgumentOutOfRangeException  ×××:"
                                   + "offset 小于 0。-或 -offset 大于 buffer 的长度。-或 -size 小于 0。-或 -size 大于 buffer 的长度减去 offset 参数的值。"
                                   + ee.Message;
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
                catch (Exception ee)
                {
                    errorMessage = "×××  Unknown exception  ××× :"
                                   + "Firing other unknown exception !!!!!!"
                                   + ee.Message;
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                }
            }
            recvEventArgs.SetErrMessage(errorMessage);
            m_ReceiveMessageEventFiring(firEventType, recvEventArgs, "m_ReceiveMessage");
        }
Пример #9
0
        private void m_SendMsgCallBack(IAsyncResult asyncResult)
        {
            DebugQy.LogTag("m_SendMsgCallBack", " ---- in ---- ", "#3487E8FF");
            string              errorMessage = string.Empty;
            SocketAnsynParam    ansynParam   = asyncResult.AsyncState as SocketAnsynParam;
            ISocketSndEventArgs sndEventArgs = ansynParam.transEventArgs as ISocketSndEventArgs;
            FIRING_D_C_F        firEventType = FIRING_D_C_F.DEFAULT;

            try
            {
                SocketError socketErrorCode;
                int         sndBufferSize = ansynParam.workSocket.EndSend(asyncResult, out socketErrorCode);
                if (socketErrorCode != SocketError.Success)
                {
                    DebugQy.LogWarning("[SEND MESAGE CALLBACK] Socket error : [" + socketErrorCode.ToString() + "]");
                }
                if (sndBufferSize == sndEventArgs.BufferSize)
                {
                    errorMessage = "√√√ no mistake √√√ SendComplete buffer lenth is :[" + sndBufferSize + "]";
                    firEventType = FIRING_D_C_F.FIR_COMPLETE;
                }
                else
                {
                    DebugQy.LogWarning("Real 'SEND' buffer != needSize   NeedSndLengrh :[" + sndEventArgs.BufferSize + "]*-*-*-*-*");
                    DebugQy.LogWarning("Real 'SEND' buffer != needSize   RealSndLengrh :[" + sndBufferSize + "]*-*-*-*-*");
                    DebugQy.LogWarning("源:." + Encoding.UTF8.GetString(sndEventArgs.SendBuffer, 0, sndEventArgs.BufferSize) + ".");
                    errorMessage = "×××  receive bytes size is wrong.  ××× :"
                                   + "需接收数据与接收数据字节不匹配!";
                    DebugQy.LogWarning(errorMessage);
                    firEventType = FIRING_D_C_F.FIR_FAILED;
                    //TODO:返回值校验的逻辑处理:查看Socket底层后再做补充 !!!
                }
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "×××  ArgumentNullException  ×××:"
                               + "asyncResult 为 null。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "×××  ArgumentException  ×××:"
                               + "BeginSend 方法调用后未返回 asyncResult。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SocketException ee)
            {
                errorMessage = "×××  SocketException  ×××:"
                               + "试图访问套接字时发生错误。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ObjectDisposedException ee)
            {
                errorMessage = "×××  ObjectDisposedException  ×××:"
                               + "Socket 已关闭。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (InvalidOperationException ee)
            {
                errorMessage = "×××  InvalidOperationException  ×××"
                               + "先前为异步发送已调用过 EndSend。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "×××  Unknown exception  ××× :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            sndEventArgs.SetErrMessage(errorMessage);
            m_SendMessageEventFiring(firEventType, sndEventArgs, "m_SendMsgCallBack");
            DebugQy.LogTag(">>>>>>> SEN MSG IN CLIENT >>>>>>>", "↑↑↑↑↑↑↑ [ out ][" + sndEventArgs.Tag + ":" + sndEventArgs.BufferSize + "]↑↑↑↑↑↑↑ ", "#3487E8FF");
        }
Пример #10
0
        private void m_SendMessage(byte[] buffer, string tag, SocketFlags flags = SocketFlags.None)
        {
            DebugQy.LogTag("m_SendMessage", " ---- in ---- ", "#3487E8FF");
            FIRING_D_C_F        firEventType = FIRING_D_C_F.DEFAULT;
            string              errorMessage = string.Empty;
            ISocketSndEventArgs sndEventArgs = new SndEventArgs();

            sndEventArgs.SetBuffer(buffer);
            sndEventArgs.SetTag(tag);
            SocketAnsynParam stateParam = new SocketAnsynParam();

            stateParam.workSocket     = m_clientSocket;
            stateParam.transEventArgs = sndEventArgs;
            try
            {
                SocketError socketErrorCode;
                m_clientSocket.BeginSend(sndEventArgs.SendBuffer,
                                         0,
                                         sndEventArgs.BufferSize,
                                         flags,
                                         out socketErrorCode,
                                         new AsyncCallback(m_SendMsgCallBack),
                                         stateParam
                                         );
                if (socketErrorCode != SocketError.Success)
                {
                    DebugQy.LogWarning("[SEND MESAGE] Socket error : [" + socketErrorCode.ToString() + "] ,Check it !!!!!!!");
                }
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "×××  ArgumentNullException  ×××:"
                               + "buffers 为 null。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ArgumentException ee)
            {
                errorMessage = "×××  ArgumentException  ×××:"
                               + "buffers 为空。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SocketException ee)
            {
                errorMessage = "×××  SocketException  ×××:"
                               + "试图访问套接字时发生错误。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ObjectDisposedException ee)
            {
                errorMessage = "×××  ObjectDisposedException  ×××:"
                               + "Socket 已关闭。"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "×××  Unknown exception  ××× :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                firEventType = FIRING_D_C_F.FIR_FAILED;
            }

            sndEventArgs.SetErrMessage(errorMessage);
            m_SendMessageEventFiring(firEventType, sndEventArgs, "m_SendMessage:");
        }
Пример #11
0
        private void m_BeginConnect(EndPoint endPoint)
        {
            DebugQy.LogTag("<<<<<<< CON ENP IN CLIENT >>>>>>>", "*-*-*-*-*[ in ]*-*-*-*-*");

            FIRING_D_C_F        _firEventType = FIRING_D_C_F.DEFAULT;
            string              errorMessage  = string.Empty;
            ISocketConEventArgs _conEventArgs = new ConEventArgs();
            SocketAnsynParam    stateParam    = new SocketAnsynParam();

            stateParam.workSocket     = m_clientSocket;
            stateParam.transEventArgs = _conEventArgs;
            try
            {
                m_clientSocket.BeginConnect(endPoint,
                                            new AsyncCallback(m_ConnectCallBack),
                                            stateParam
                                            );
            }
            catch (ArgumentNullException ee)
            {
                errorMessage = "×××  ArgumentNullException  ××× :"
                               + "remoteEP is null. Error code :"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SocketException ee)
            {
                errorMessage = "×××  SocketException  ××× :"
                               + "试图访问套接字时发生错误:"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (ObjectDisposedException ee)
            {
                errorMessage = "×××  ObjectDisposedException  ××× :"
                               + "Socket 已关闭。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (SecurityException ee)
            {
                errorMessage = "×××  SecurityException  ××× :"
                               + "调用堆栈上部的调用方无权执行所请求的操作。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (InvalidOperationException ee)
            {
                errorMessage = "×××  InvalidOperationException  ××× :"
                               + "Socket 为 Listen。"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }
            catch (Exception ee)
            {
                errorMessage = "×××  Unknown exception  ××× :"
                               + "Firing other unknown exception !!!!!!"
                               + ee.Message;
                _firEventType = FIRING_D_C_F.FIR_FAILED;
            }

            _conEventArgs.SetErrMessage(errorMessage);
            m_ConnectEventFiring(_firEventType, _conEventArgs, "m_BeginConnect");
        }