我正在使用Boost Asio編寫C++客戶端/服務器應用程序。我有一個工作服務器,服務器工作流程是我理解的很好的東西。使用Boost Asio通過TCP套接字執行異步寫入操作
我的客戶端應用程序按照Asio示例中所示的方式處理連接,然後與服務器交換握手信息。然而,在那之後,用戶應該能夠在他們想要的時間和方式上向服務器發送請求,這是我理解該範例時遇到的問題。
最初的工作流程是這樣這樣一點點:
OnConnected() { SendHandshake() }
SendHandshake() { async.write_some(handshake...), async_read_some(&OnRead) }
OnRead() { ReadServerHandshake() *** }
而且,用戶將通過使用寫入發送消息(MSG):
Write (msg) { async_write_some(msg,&OnWrite), async_Read_some(&OnRead) }
OnWrite() {}
編輯:改寫問題更清晰,這裏是場景:
初始握手完成後,客戶端僅用於發送請求到服務器呃,它會得到答覆。因此,例如,用戶發送寫入。客戶端等待讀取操作完成,讀取回復並執行相關操作。接下來的用戶寫作只會在5分鐘後纔會出現。在此期間io_service是否會停止工作,因爲在最後一次回覆讀取和下一次寫入之間沒有未完成的異步操作?
我會試試這個,謝謝。 – skali 2012-03-10 13:13:19