У меня открыто TCP-соединение между Symbian и сервером, и я хотел бы
передавать огромные порции данных (около 32 КБ) между этими двумя конечными точками. Unfortuantely,
показатели производительности довольно плохие, и я ищу идеи, как я мог бы улучшить
моя реализация. Одна из вещей, которую я попробовал, заключалась в увеличении количества байтов, которые могут быть
буферизуется сокетом для отправки и получения на 64K.
iSocket.SetOpt(KSoTcpSendWinSize, KSolInetTcp, 0x10000);
iSocket.SetOpt(KSoTcpRecvWinSize, KSolInetTcp, 0x10000);
Есть ли другие вещи, которые можно оптимизировать на уровне сокетов для повышения пропускной способности?
Также возможно, что мой код сокета делает что-то глупое. Следует простой запрос / ответ
протокол. Я должен использовать блокирующую процедуру WaitForRequest, чтобы убедиться, что данные были отправлены / получены
так что я могу обработать его тогда.
//store requestinfo in reqbuf and send it to server; wait for iStatus
iSocket.Send( reqbuff, 0, iStatus, len );
User::WaitForRequest(iStatus);
//store 32K file in resbuff; wait for iStatus to be sure that all data has
//been received
iSocket.Recv(resbuff, 0, iStatus, len);
User::WaitForRequest(iStatus);
//do something with the 32K received
Буду благодарен за каждый комментарий!