public void Listen(IPEndPoint localEndPoint, int backlog = 0x7fffffff)
{
if (_socket != null)
throw new InvalidOperationException("Already Listening");
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(localEndPoint);
socket.Listen(backlog);
_socket = socket;
_localEndPoint = localEndPoint;
_acceptArgsPool = new Stack<SocketAsyncEventArgs>();
for (var i = 0; i < 10; i++)
{
var acceptArg = new SocketAsyncEventArgs();
acceptArg.Completed += OnAcceptComplete;
lock (_lock)
_acceptArgsPool.Push(acceptArg);
}
IssueAccept();
}