stream.DataAvailable을 사용하여 처리가 끝났는지를 판단하려고하지만 때로는 값이 거짓이지만 가끔씩 다시 진실한 경우가 있습니다. 이.net TcpClient를 사용하여 NetWorkStream이 끝나는 시점을 판단하려면 어떻게해야합니까?
int connectCounter = 0;
while (connectCounter < 1200)
{
if (stream.DataAvailable)
{
while (stream.DataAvailable)
{
byte[] buffer = new byte[bufferSize];
int flag = stream.Read(buffer, 0, buffer.Length);
string strReadXML_t = System.Text.Encoding.Default.GetString(buffer);
strReadXML = strReadXML + strReadXML_t.Replace("\0", string.Empty);
}
if (strReadXML.Substring(strReadXML.Length - 1, 1).Equals(">"))
{
break;
}
}
Thread.Sleep(100);
connectCounter++;
}
처럼 '>'카운터를 설정하고 기호로 끝을 판단하는 것은 그것을 다루는 좋은 methord가? 감사합니다!
감사합니다. 저에게 많은 도움이됩니다! :) –
이 코드에는 여전히 한 가지 문제가 있습니다. int n = state.ns.EndRead (ar); if (n == 0) { // 읽을 바이트가 더 이상 없음 // 신호 완료 state.e.Set(); 반환; } n == 0 인 경우 methord가 반환되지만 단순히 스트림에 약간의 인터럽트가있는 경우 n == 0으로 읽을 바이트가 더 이상 없다고 판단 할 수 없습니다. 정확한 이유는 모르겠다. 아마도 밴드가 이유일지도 몰라. –