Определите, подключен ли NamedPipeClientStream - PullRequest
2 голосов
/ 21 сентября 2011

У меня проблема с подключением к процессу с использованием PipeConnection

Моя идея:

A - процесс A
B - процесс B
1. A (куча клиентов) хочет отправить сообщение B (труба серверу)
2. B читает сообщение и отключается.

2.1. Если B нужно ответить
2.2 B (труба клиент) подключается к A (куча сервера) 2.3 A читает сообщение и отключается.

Проблема возникает, если A отправляет сообщение B, а затем imedlitley хочет отправить еще одно сообщение

Пример кода:

//Server
static void Main(string[] args)
    {
        using (NamedPipeServerStream server = new NamedPipeServerStream("EOG", PipeDirection.In))
        {
            StreamReader sr = new StreamReader(server);

            while (true)
            {
                server.WaitForConnection();
                Console.WriteLine("Conected to client");
                try
                {
                    Console.WriteLine(sr.ReadLine());
                    server.Disconnect();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            sr.Dispose();
        }
    }
}



//Client
static void Main(string[] args)
    {
        using (NamedPipeClientStream client = new NamedPipeClientStream(".", "EOG", PipeDirection.Out))
        {
            StreamWriter sw = new StreamWriter(client);
            while (true)
            {
                Console.WriteLine("Message: ");
                sw.WriteLine(Console.ReadLine());
                if (!client.IsConnected)
                    client.Connect();
                sw.Flush();
            }
            sw.Dispose();
        }
        Console.ReadKey();
    }
...