コード例 #1
0
        private void Listen()
        {
            while (IsStart)
            {
                try
                {
                    if (mListener == null)
                    {
                        break;
                    }

                    if (mListener.Pending())
                    {
                        Socket socket = mListener.AcceptSocket();

                        if (socket != null)
                        {
                            socket.SendBufferSize    = 1024 * 1024;
                            socket.ReceiveBufferSize = 1024 * 1024;
                            if (socket.Connected)
                            {
                                IProcessor processor = new CSocketServerProcessor(this, socket);

                                processor.OnReceiveData += new ProcessorReceiveEvent(DoReceiveData);
                                processor.OnExit        += new ProcessorEvent(DoProcessorExit);

                                Append(processor);
                                processor.Start(true);
                            }
                            else
                            {
                                socket.Close();
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(50);
                    }
                }
                catch (SocketException e)
                {
                    CLog.WriteErrorLog(string.Format("SocketException: {0}", e));
                }
                catch (Exception e)
                {
                    CLog.WriteErrorLog(string.Format("Exception: {0}", e));
                }
            }
        }
コード例 #2
0
ファイル: AsyncSocketServer2.cs プロジェクト: ewin66/Monitor
        private void AcceptConnect(IAsyncResult result)
        {
            if (IsStart)
            {
                if (mListenSocket != null)
                {
                    try
                    {
                        Socket socket = mListenSocket.EndAccept(result);
                        if (socket != null)
                        {
                            socket.SendBufferSize    = 1024 * 1024;
                            socket.ReceiveBufferSize = 1024 * 1024;
                            if (socket.Connected)
                            {
                                IProcessor processor = new CSocketServerProcessor(this, socket);

                                processor.OnReceiveData += new ProcessorReceiveEvent(DoReceiveData);
                                processor.OnExit        += new ProcessorEvent(DoProcessorExit);

                                Append(processor);
                                processor.Start(false);
                            }
                            else
                            {
                                socket.Close();
                            }
                        }
                    }
                    catch (SocketException e)
                    {
                        CLog.WriteErrorLog(string.Format("AcceptConnect SocketException: {0}", e));
                    }
                    catch (Exception e)
                    {
                        CLog.WriteErrorLog(string.Format("AcceptConnect Exception: {0}", e));
                    }
                    if (IsStart)
                    {
                        mListenSocket.BeginAccept(mAcceptConnect, mListenSocket);
                    }
                }
            }
        }