gpt4 book ai didi

c++ - 在 Symbian 中优化套接字

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:35 25 4
gpt4 key购买 nike

我在 Symbian 和服务器机器之间打开了一个 TCP 连接,我想在这两个端点之间传输大量数据(大约 32K)。不幸的是,性能数据很差,我正在寻找改进方法我的实现。我尝试过的其中一件事是增加可以存储的字节数由用于发送和接收的套接字缓冲到 64K。

iSocket.SetOpt(KSoTcpSendWinSize, KSolInetTcp, 0x10000);        
iSocket.SetOpt(KSoTcpRecvWinSize, KSolInetTcp, 0x10000);

是否有任何其他东西可以在套接字级别进行优化以获得更好的吞吐量?

也有可能是我的套接字代码做了一些愚蠢的事情。它遵循一个简单的请求/响应协议(protocol)。我必须使用阻塞 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

感谢您的每一条评论!

最佳答案

如果您使用事件对象,您可以并行发送和接收。 SDK 中应该有示例代码。显然,这是否有帮助取决于所使用的应用程序和协议(protocol)。

我不是 TCP 专家,但我认为套接字上的一些参数可能会导致您的使用模式(发送一个大缓冲区,然后接收一个大缓冲区)与发送大致相等的数量时相比无法最佳地使用网络两个方向的数据。可以在其他操作系统中配置的所有关于 TCP 套接字的东西:se 也应该可以在 Symbian 上配置,但首先你需要弄清楚是什么。我建议您问另一个 TCP 通用问题并获得一些指示。然后你可以弄清楚如何在 Symbian 中设置它。

关于c++ - 在 Symbian 中优化套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com