У меня есть некоторый клиентский код, который связывается с сервером с помощью потоков, которые я хочу протестировать.Я хочу проверить, что клиент отправляет на сервер правильные команды.
Для этого я создал метод Connect, который принимает два потока: один, из которого клиент читает, и один, в который клиент пишет.Затем я могу предоставить MemoryStream обоим и прочитать команды, отправленные из MemoryStream, в который клиент пишет.
Моя проблема заключается в том, что мне нужно закодировать метод, который требует, чтобы эти два потока были одинаковыми.Я также заметил, что единственное время, когда мне нужно использовать два разных потока, это когда я хочу протестировать клиента.Поэтому я хочу реорганизовать метод Connect для получения только одного потока, который будет записываться и считываться.
Я не могу передать MemoryStream этому методу, поскольку метод write записывает в некоторый внутренний байтовый массив,из которого метод чтения также читает из.Если я передам это клиенту, он сможет прочитать только что отправленные им команды!
Поэтому я бы спросил, какая настройка потока может это сделать?Я просто хочу поток, который читает из одного источника, но пишет в другой.Мне потребуется доступ к обоим источникам, чтобы «сервер», являющийся моим тестом, мог отправлять правильные ответы на команды и читать команды, отправленные клиентом.
По сути, мне нужны два потока: S1и S2.Один поток передается клиенту, другой - серверу.
Метод чтения S1 «подключен» к методу записи S2 => S1 читает то, что пишет S2.
Метод записи S1 «подключен» к методу чтения S2=> S2 читает то, что пишет S1.
Это совершенно нормальный случай, когда клиент общается с сервером.Здесь я просто хочу сделать это в памяти.Как я могу закодировать это?