2013-05-30 6 views
0

소켓에서 읽는 C# 코드가 있습니다. 어떤 이유로 상대방이 응답하지 않습니다. NetworkStream.Read 메서드에서 디버거가 작동하지 않습니다. 디버거를 깰 경우 여전히 거기에 갇혀 있습니다. 전체 프로그램을 종료하지 않고 연결을 다시 설정하려고합니다. Read을 건너 뛰도록 디버거에 지시하려면 어떻게해야합니까?디버거가 응답하지 않는 기능에서 벗어납니다.

답변

0

읽을 때 데이터를 사용할 수 있는지 확인하고 있습니까? 예 on MSDN는 다음과 같습니다

do 
{ 
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length); 
    // other stuff 
} 
while(myNetworkStream.DataAvailable); 

내가 어떤 데이터를 사용할 수있을 경우이 건너 뛰어야 상상한다. NetworkStream에 대한 경험이 거의 없기 때문에 문제가 발생할 수도 있습니다.

그렇다면 스트림을 차단해도 응용 프로그램을 계속할 수 있도록 비 블로킹 호출을 원하는 것처럼 들립니다. (이것은 여러 가지 이유로 좋은 생각 일 것입니다.) 따라서 다른 스레드에서 스트림을 읽는 것은 길 일 것입니다. 그렇게하는 방법은 사용중인 .NET 버전에 따라 다릅니다.

+0

서버가 바이트에 대한 요청을 받았지만 어떤 이유로 내부에서 예외가 발생하여 수신기에서 나갔습니다. 밖에서 그는 다른 연결을 기다리고 있으므로 잡았지만 클라이언트는이 읽기에 머물러 있습니다. –

관련 문제