byte[] b = new byte[4096];
socket.Receive(b);
이제 첫 번째 생각은 물론 클래스의 멤버 변수로 선언하여 수신 버퍼를 다시 사용하는 것입니다. 다음 문제는 내가 기대하고있는 모든 데이터를받지 못했기 때문에 데이터를 버퍼링해야한다는 것입니다. 수신 한 바이트 수를 추적하고 오프셋을 지정하면 쉽게 달성 할 수 있습니다.
socket.Receive(m_ReceiveBuffer, count, m_ReceiveBuffer.Length - count);
여기서 문제는 여전히 충분하지 않은 경우, buffer는 메모리를 복사하고이 버퍼로 계속 수신하는 것을 의미합니다. 무언가 잘못되었다고 가정하면이 버퍼는 계속 커질 것이며 메시지가 충분히 크면 메모리가 부족한 시스템을 실행하게됩니다.
어떤 아이디어를 제대로 처리하는 방법? 내가 말하는 그저 채우기, 복사, 성장, 채우기, 복사, 성장하는 것보다 더 나은 데이터 수신 방법이 있습니까?
아직도 데이터를 처리 할 수없는 문제가 해결되지 않고 있으며, 메모리를 계속 채울 것입니다. – esac
데이터를 "처리"한다는 것이 무슨 뜻인지 설명해 주시겠습니까? 청크로 데이터를 "처리"할 수 없습니까? 물론 모든 데이터를 읽어야 할 필요가 있습니까? 물론 메모리에 저장해야 할 필요가 있습니까? –