나는 간단한 프록시 서버를 만드는거야하지만 난 이상한 상황에 직면을 추구 지원하지 않습니다, 나는 다음과 같은 한 코드 :는 NetworkStream이 작업
var clientRequestStream = _tcpClient.GetStream();
var requestHeader = clientRequestStream.GetUtf8String();
GetUtf8String
이 스트림을 읽어 Stream
클래스의 확장 방법 (포함 HttpRequest
헤더). 호스트 및 요청 된 URL에 액세스하려면 해당 헤더를 추출해야합니다. NetworkStream을 읽으면 완료됩니다. 검색 작업을 수행하고 해당 스트림을 읽고 다른 원격 NetworkStream
에 기록했기 때문에 clientRequestStream.Position = 0;
을 설정해야합니다.
나는이 문제를 어떻게 해결해야하는지 모른다. 어떤 조언이 도움이 될 것이다.
편집 : 나는 또한 시도 카피는 NetworkStream 다음 MemoryStream을 MemoryStream을에 작업을 추구 수행하기 위해,이 예외는 아니다하지만 난는 NetworkStream에서 읽고 싶은 경우 버퍼는 항상 항상 비어 있습니다.
또한 반사경을 사용하여 Stream.CopyTo
내부에서 어떤 현상이 발생하는지 확인했습니다. 아래 코드 참조 :
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);
}
}
이것은 CopyTo가 수행하는 작업입니다. CopyTo
을 사용해도 문제가 해결되지 않았습니다. 그것은 소스 (여기 NetworkStream)를 끝까지 읽으므로. 이 상황을 처리 할 또 다른 방법이 있습니까?
Jon 저는 NetworkStream에 NetworkStream을 복사했지만 버퍼가 항상 비어 있음을 읽고 싶습니다. – saber
존 또한 CopyTo를 테스트했지만 버퍼를 MemoryStream에 복사하는 데 하루가 걸립니다. 나는 이유를 모른다. – saber
@SaberAmani : 네트워크 스트림에 무엇이 있습니까? 서버가 연결을 계속 유지하면 복사가 완료되지 않습니다. 귀하의 첫 번째 의견에 관해서는 - 그것은 당신이 데이터를 올바르게 복사하지 않았 음을 암시합니다. 코드를 보지 않고 어떻게 말하기는 어렵습니다. –