每帧以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);
答案 0 :(得分:1)
在这些调用之间保持连接打开。 TCP连接需要交换三个数据包,断开连接需要四个,因此如果每次连接和断开连接,您的数据包开销最多为7次。
但是,它不是一个实时协议。你必须在这里和那里期待一些滞后。