我有这样的代码:
std::string msg = "blablabla" // a large string, even like 100-200KB
int total = 0;
int left = msg.size();
int resp_len;
while (total < resp.size())
{
gettimeofday(&start, NULL);
resp_len = send(*p_fd, msg.substr(total).c_str(), left, 0);
gettimeofday(&end, NULL);
cout << end.tv_usec - start.tv_usec << endl; // each send takes like 2-4 ms
if (resp_len == -1)
break;
total += resp_len;
left -= resp_len;
}
正如你在那个评论中看到的那样,每个send()调用需要2-4毫秒,这对我的需求来说有点太多了,我很确定它可能会更快,但我真的不知道如何...套接字处于非阻塞模式,但除此之外我没有设置任何东西。在客户端,我得到的消息很好,但是当我测量获取整个消息所需的时间时,它会变为8-18毫秒。通常该消息带有3个send()调用,因此它已经需要6-12毫秒,连接时间和处理类似于0。
任何想法如何让send()调用更快?我见过其他程序发送速度快100-200KB ......