Как я могу использовать WCF вместо ручного C # с помощью tcplistenr? - PullRequest
3 голосов
/ 21 марта 2011

У меня есть следующий код, и мне было интересно, есть ли преимущество в перемещении этого в WCF?

По сути, я слушаю сообщения smtp через некоторый порт и использую пул потоков для асинхронного анализа каждого соединения tcp.

static void Main(string[] args)
{
    try
    {
    TcpListener listener = new TcpListener(IPAddress.Any, 8000);
    TcpClient client;
    listener.Start();

    while (true) // Add your exit flag here
    {
        client = listener.AcceptTcpClient();
        ThreadPool.QueueUserWorkItem(ThreadProc, client);
    }
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    Console.ReadLine();
    }

}//Main


private static void ThreadProc(object obj)
{
    var client = (TcpClient)obj;
    // Do your work here...

    NetworkStream ns = client.GetStream();

    using (StreamWriter writer = new StreamWriter(ns))
    {
       writer.WriteLine("220 SMTP server ready.");
       writer.Flush();

       using (StreamReader reader = new StreamReader(ns))
       {
          //parse + persist smtp message here...
       }
    }
}//ThreadProc
...