草庐IT

perform_async

全部标签

c++ - boost::asio 在 async_read 中复制输入数据

最近从libevent转成boost::asio,一周后发现一个奇怪的现象:当我从客户端读取数据时,有些数据好像是重复的,好像库没有'不必将其标记为已读(或类似的东西)。我的“读取”方法如下所示:voidclient::doRead(){deletereadBuffer;//gettingridofolddatareadBuffer=newSerializedBuffer((uint)READ_BUFFER_SIZE);readBuffer->position(0);asio::async_read(socket,asio::buffer(readBuffer->bytes(),REA

c# - Async TCP Server 代码示例分析

我正在使用以下代码创建异步TCP服务器:privatevoidSetupServerSocket(){varmyEndpoint=newIPEndPoint(IPAddress.Any,_port);_serverSocket=newSocket(myEndpoint.Address.AddressFamily,SocketType.Stream,ProtocolType.Tcp);_serverSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.KeepAlive,true);_serverSocket.B

c++ - Boost ASIO async_connect 在应该失败的时候却成功了,为什么?

我有一个服务器应用程序,其中我只接受一个带有boost::asio::ip::tcp::acceptor和async_accept的客户端。我运行客户端应用程序并使用boost::asio::ip::tcp::socket和async_connect成员函数成功连接。然后我让客户端崩溃(CTRL-ALT-DEL)。如果我重新启动客户端应用程序并尝试重新连接,它会成功...即使我没有在服务器端重做async_accept。这怎么可能?编辑:如果服务器应用程序未运行,async_connect将失败。 最佳答案 有可能是因为accept

performance - TCP 最大吞吐量和浏览器

理论上,最大tcp速度是min{rwnd,cwnd}/RTT,其中cwnd是拥塞窗口大小,rwnd是接收窗口大小。假设cwnd足够大,那么它就是rwnd/RTT。现在,如果最大窗口大小为65Kbytes,我得到(使用来自某些站点的这些计算):RTT10ms=>TCPthroughput=52428000bps=52MbpsRTT20ms=>TCPthroughput=26214000bps=26MbpsRTT50ms=>TCPthroughput=10485600bps=10MbpsRTT100ms=>TCPthroughput=5242800bps=5.2MbpsRTT150ms=>

c++ - boost::asio::async_read 在换行符上返回文件结尾错误

我正在尝试使用async_read和async_write向服务器发出简单的tcp请求并设置超时。问题是async_read在尝试读取直到传输结束时给出错误,在第一个'\n'上它返回错误(文件结束)。逐行读取字符串时(当eots->at(last_request)='\n')时,它成功读取了整个响应。if(eots->at(last_request)=="")//readuntilend{boost::asio::async_read(socket_,input_buffer_,boost::asio::transfer_at_least(1)//readuntillendorerro

networking - boost::asio tcp async_accept 处理程序未被调用但同步连接工作正常

我有一个TCP客户端,它可以正常调用TCP套接字上的常规连接。但是,对async_connect的调用永远不会触发处理程序。他们都使用几乎相同的代码。区别仅在于调用连接与异步连接。标题#ifndefTCPCLIENT_H#defineTCPCLIENT_H#include#include#include#include#include#includeusingboost::asio::ip::tcp;//HowaboutaninterfaceforoutputtingerrorsclassBoostTCPDebugOutputInterface{public:virtualvoidou

performance - 本地 IPC 的平均性能测量

我们现在正在为我们当前的项目评估不同的IPC(或更确切地说是RPC)方法,该项目还处于早期阶段。性能很重要,因此我们正在进行一些测量以帮助我们做出选择。我们将进行通信的进程将驻留在同一台机器上。一个单独的有效选项是完全避免IPC(通过将一个进程的功能封装在.NETDLL中并让另一个进程使用它),但这是我们真正想避免的选项,因为这些两个软件是由两个独立的公司开发的,我们发现维护良好的“栅栏”非常重要,它可以成为好邻居。我们的测试包括使用每种方法跨进程边界传递消息(其中包含各种大小的BLOB)。这些是我们得到的数字(性能范围与消息大小范围相关):网络服务(基于HTTP的SOAP):25-3

performance - 如何在不嗅探的情况下测量 TCP/IP 开销?

我想知道是否有一种编程方式来衡量通过TCP流发送数据时使用的全部带宽。因为我似乎不知道网络堆栈如何将流分成数据包,或者它何时发送TCPSYN或ACK或它在后台为您做的许多事情,所以我只能对此进行粗略估计。我能想到的唯一解决方案是实际嗅探界面,但我想堆栈已经可以为我收集这些统计信息。它在Windows或Linux下以Java运行(当然,首选可移植解决方案),但我可以JNI化C/C++答案,这样(和操作系统API调用)也是一个很好的答案。谢谢! 最佳答案 [Windows特定答案]在Windows上,您可以考虑查看ETW(Windows

performance - 在用户空间与内核空间中实现协议(protocol) - 性能影响

我正在寻找一些关于将协议(protocol)实现(例如TCP/IP堆栈)从内核空间移动到用户空间的影响的文章/论文。它显然会产生影响,但影响有多大?或者有任何关于上下文切换成本的文献。我意识到可能没有准确的答案,因为这取决于应用程序。因此,假设它是一个网络堆栈,如果任何人都可以提供一些输入,那就太好了。我用谷歌搜索但找不到任何好的东西,除了这个UserspaceVsKernelspaceprogramperformancedifference但这并没有提供足够的光线。 最佳答案 据我所知,您可以看到文件系统比较-有许多不同的实现,如

performance - 衡量网络浏览器的带宽

是否可以通过监控正常的http请求来衡量网络浏览器的上传和/或下载速度?理想情况下,Web应用程序无需任何修改,也无需像JavaScript/Java/Flash这样的客户端脚本,就能够知道客户端的速度。因此,即使客户端使用像Curl这样的库访问服务,它仍然可以工作。如果这是可能的,怎么办?如果不可能,为什么?这种方法的准确性如何?(如果它有助于假设PHP/Apache,但实际上这是一个独立于平台的问题。而且能够衡量上传速度对我来说更重要。) 最佳答案 概览您要求的是沿路径进行通常称为“被动”可用带宽(ABW)的测量(相对于测量单个