Я пытаюсь реализовать именованный сервер pipe в .NET. Клиент будет С++. Характер отправленных данных не имеет отношения к вопросу.
Моя первая наивная реализация выглядит примерно так:
using (NamedPipeServerStream stream =
new NamedPipeServerStream(PipeName,
PipeDirection.InOut,
numberOfListeners,
PipeTransmissionMode.Message))
{
while (true)
{
try
{
stream.WaitForConnection();
var request = ReadRequest(stream);
var reply = Process(request);
WriteReply(stream, reply);
stream.WaitForPipeDrain();
}
catch (Exception ex)
{
//TO DO: log
}
}
}
Я подхожу к этому правилу?
Что произойдет, когда два клиента одновременно откроют соединение?
Будут ли они использовать один и тот же поток, и данные будут перемешаны?
Как я могу избежать этого?
Любые идеи или ресурсы на этом помогут. Я новичок в этой теме.