Exemple #1
0
        public void StopListening()
        {
            try
            {
                m_ShuttingDown = true;

                if (Socket != null)
                {
                    Log.LogMsg("Shutting down UDP listener Socket. ");
                    StackTrace   stackTrace  = new StackTrace();        // get call stack
                    StackFrame[] stackFrames = stackTrace.GetFrames();  // get method calls (frames)

                    // write call stack method names
                    foreach (StackFrame stackFrame in stackFrames)
                    {
                        Log.LogMsg(stackFrame.GetFileName() + ", " + stackFrame.GetFileLineNumber() + " :" + stackFrame.GetMethod().Name);   // write method name
                    }

                    Socket.Shutdown(SocketShutdown.Both);
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
                if (Socket != null)
                {
                    Log.LogMsg("Closing UDP listener Socket.");
                    Socket.Close();
                    Socket = null;
                }
                if (m_ListenArgs != null)
                {
                    for (int i = 0; i < m_ListenArgs.Count; i++)
                    {
                        SocketAsyncEventArgsCache.PushReadEventArg(m_ListenArgs[i], new EventHandler <SocketAsyncEventArgs>(ReadCompleted));
                    }
                }
                Listening = false;
            }
        }
Exemple #2
0
        public void AfterShutdown()
        {
            if (m_RecArgs != null)
            {
                SocketAsyncEventArgsCache.PushReadEventArg(m_RecArgs, new EventHandler <SocketAsyncEventArgs>(IO_Completed));
                m_RecArgs = null;
            }

            if (m_SendArgs != null)
            {
                SocketAsyncEventArgsCache.PushSendEventArg(m_SendArgs, new EventHandler <SocketAsyncEventArgs>(IO_Completed));
                m_SendArgs = null;
            }

            if (m_SendArgsUDP != null)
            {
                SocketAsyncEventArgsCache.PushSendEventArg(m_SendArgsUDP, new EventHandler <SocketAsyncEventArgs>(IO_Completed));
                m_SendArgsUDP = null;
            }
        }