Il codice da me utilizzato è il seguente:
codice:
_listener = new TcpListener(_localEndPoint);
_listener.Start();
_listener.BeginAcceptTcpClient(HandleAcceptTcpClie nt, _listener);
private void HandleAcceptTcpClient(IAsyncResult result)
{
if (_listening)
{
_listener.BeginAcceptTcpClient(HandleAcceptTcpClie nt, _listener);
TcpClient client = _listener.EndAcceptTcpClient(result);
ClientConnection connection = new ClientConnection(client);
_activeConnections.Add(connection);
ThreadPool.QueueUserWorkItem(connection.HandleClie nt, client);
}
}
public void HandleClient(object obj)
{
_remoteEndPoint = (IPEndPoint)_controlClient.Client.RemoteEndPoint;
_clientIP = _remoteEndPoint.Address.ToString();
_controlStream = _controlClient.GetStream();
_controlReader = new StreamReader(_controlStream);
_controlWriter = new StreamWriter(_controlStream);
_controlWriter.WriteLine("220 Service Ready.");
_controlWriter.Flush();
_validCommands.AddRange(new string[] { "AUTH", "USER", "PASS", "QUIT", "HELP", "NOOP" });
string line;
_dataClient = new TcpClient();
string renameFrom = null;
try
{
while ((line = _controlReader.ReadLine()) != null)
{
.............
}
}
}