c ++ tcp send()慢

时间:2014-06-08 22:47:20

标签: c++ sockets tcp send

我有这样的代码:

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 ......

0 个答案:

没有答案