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)); } } }
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); } } } }