public void Listen()
{
try
{
if (_listenSocket != null)
throw new AegisException(AegisResult.AcceptorIsRunning, "Acceptor is already running.");
if (ListenIpAddress.Length == 0)
_listenEndPoint = new IPEndPoint(IPAddress.Any, ListenPortNo);
else
_listenEndPoint = new IPEndPoint(IPAddress.Parse(ListenIpAddress), ListenPortNo);
_listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_listenSocket.Bind(_listenEndPoint);
_listenSocket.Listen(100);
if (_networkChannel.Name != "")
Logger.Info(LogMask.Aegis, "{0} listening on {1}, {2}", _networkChannel.Name, _listenEndPoint.Address, _listenEndPoint.Port);
else
Logger.Info(LogMask.Aegis, "Listening on {0}, {1}", _listenEndPoint.Address, _listenEndPoint.Port);
_listenSocket.AcceptAsync(_eventAccept);
}
catch (AegisException)
{
throw;
}
catch (Exception e)
{
throw new AegisException(AegisResult.NetworkError, e, e.Message);
}
}