我已經使用Boost Asio創建了客戶端 - 服務器體系結構。提升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,沒有工作。還有什麼我可以做的?
你會如何建議這樣做呢?我應該從哪裏開始,這很難做到嗎? – kiri 2010-09-07 12:27:58
使用async_read和async_write – 2010-09-07 12:32:27
是的,這很難做到,但是你會很高興你學會了如何做到這一點。使用Google追蹤一些示例代碼,理解它(最好通過在調試器中運行它),然後相應地重新設計您的設計。 – 2010-09-07 12:38:25