То, что говорит Конрад, правда, но я не думаю, что он знает Symbian. Если вам нужна функция для чтения байтов в буфер символов, то лучшим решением будет:
void Recv(unsigned char *aBuffer, int aSize)
{
TRequestStatus iStatus;
TSockXfrLength len;
TPtr8 buff(aBuffer, aSize);
iSocket.RecvOneOrMore( buff, 0, iStatus, len );
User::WaitForRequest(iStatus);
}
TBuf8 - дескриптор, который содержит массив для хранения данных. TPtr8 - это дескриптор, который ссылается на указанный вами внешний буфер. Любой из них может быть передан в RecvOneOrMore, так как они оба наследуются от типа параметра, TDes8 &. Таким образом, сокет можно сделать так, чтобы записывать свои данные непосредственно в буфер, вместо записи в буфер в стеке, а затем копировать, как это делает код Конрада.
Вам, вероятно, также необходимо проверить состояние, чтобы обнаружить ошибки, и сообщить об успехе / неудаче и продолжительности записи обратно вызывающей стороне.