NetworkStream no admite operaciones de búsqueda
Estoy creando un servidor proxy simple pero me enfrenté a una situación extraña, tengo el siguiente código:
var clientRequestStream = _tcpClient.GetStream();
var requestHeader = clientRequestStream.GetUtf8String();
GetUtf8String
es un método de extensión paraStream
clase que lee la secuencia (contieneHttpRequest
encabezados). Necesito extraer esos encabezados para acceder al host y a la URL solicitada. Una vez que la lectura de NetworkStream se hace. Necesito realizar una operación de búsqueda y configurar suclientRequestStream.Position = 0;
Porque tengo que leer esa secuencia y escribirla en otro control remotoNetworkStream
.
No sé cómo debo resolver este problema. Cualquier consejo será útil.
Editar: También intenté copiar NetworkStream a MemoryStream y luego realizar una operación de búsqueda en MemoryStream. No hay excepción, pero cuando quiero leer desde NetworkStream, su búfer siempre está vacío.
También utilicé reflector para ver qué pasa dentro.Stream.CopyTo
. Ver código abajo:
private void InternalCopyTo(Stream destination, int bufferSize)
{
int num;
byte[] buffer = new byte[bufferSize];
while ((num = this.Read(buffer, 0, buffer.Length)) != 0)
{
destination.Write(buffer, 0, num);
}
}
Esto es lo que CopyTo haciendo. Incluso si usoCopyTo
El problema sigue sin resolverse. Porque lee la fuente (aquí NetworkStream) hasta el final. ¿Hay otra forma de manejar esta situación?