gpt4 book ai didi

c++ - Boost Asio 问题,服务器-客户端,真实网络上速度慢?

转载 作者:行者123 更新时间:2023-11-28 03:55:53 24 4
gpt4 key购买 nike

我使用 Boost Asio 创建了一个客户端-服务器架构。

一切正常,我可以发送和接收消息等,所以没有关于正确性的问题。然而,当我在真实网络中实现它时,它突然变得非常慢。当我在同一台计算机上运行服务器和客户端时,它运行得非常快,但是当我在两台不同的计算机上运行它时,它变得非常慢,我必须为每条消息等待一秒钟。这些消息很小,最多 50、60 个字符。不过,它们已正确发送。

代码:

stream = new tcp::iostream(serverIp, portNum); // Clientside

对于发送和接收,我使用:

(*stream) << data << delimiter;
std::getline(*stream, response, '#');

服务器使用相同的发送和接收,以及一些设置连接的设置代码:

boost::asio::io_service io_service;

tcp::endpoint endpoint(tcp::v4(), portNum);
tcp::acceptor acceptor(io_service, endpoint);

for (;;)
{
tcp::iostream *stream = new tcp::iostream();
acceptor.accept(*(stream->rdbuf()));

// Do stuff with the stream
}

再次,它起作用了,只是在真实网络上突然变得非常缓慢。我做错了什么吗?我尝试更改 portNum,但没有用。还有什么我可以做的吗?

最佳答案

如果这是您的发送/接收代码的总和,那么在 << 和 getline 调用完成之前,等待发送方和接收方同步似乎会花费很多时间。当引入真实的网络连接时,这种效果将被大大放大。它在本地看起来可能非常快,但在假设之前先在本地测量字节吞吐量。通常,您不会像这样紧密耦合发送和接收处理 - 您基本上是采用异步 I/O 库并强制其同步。尝试重新设计以实际使用异步 I/O,并将发送和接收处理相互分离(或者至少不要像这样使用同步高级 I/O 调用来访问套接字来序列化它们)并且网络性能应该会 boost .

关于c++ - Boost Asio 问题,服务器-客户端,真实网络上速度慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3658562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com