SFML TCP套接字发送导致延迟峰值

时间:2015-01-25 19:37:59

标签: c++ c sockets tcp sfml

每帧以30 FPS(应该如此)调用,但每10秒左右就会发生一次大规模的滞后现象。尖峰往往持续5秒,然后再次平稳运行。我做错了什么?

socketsSent++;
sf::TcpSocket socket;
socket.connect(ip, atoi(serverInfo[5].c_str()));
std::string data;
data = "X:" + std::to_string((int)objects["player"].getPosition().x) + ":Y:" + std::to_string((int)objects["player"].getPosition().y);
socket.send(data.c_str(), data.length() + 1);

1 个答案:

答案 0 :(得分:1)

在这些调用之间保持连接打开。 TCP连接需要交换三个数据包,断开连接需要四个,因此如果每次连接和断开连接,您的数据包开销最多为7次。

但是,它不是一个实时协议。你必须在这里和那里期待一些滞后。