簡體   English   中英

Boost Asio-同步寫入/讀取-怎么辦?

[英]Boost asio - synchronous write / read - how to do?

首先,我想說我是Boost asio的新手,雖然我看到了很多例子,但是仍然有些我不了解的事情。

我想創建一個服務器,該服務器將接受兩個客戶端(它將使用兩個套接字)。 第一個客戶端將消息發送到服務器,而服務器會將消息發送到另一個客戶端(是的,使用服務器是沒有用的,但這不是重點,我想了解所有這些工作原理)。 這將持續到客戶端之一關閉。

因此,我創建了一個服務器,該服務器等待客戶端,然后,它必須等待第一個客戶端發送一些消息。 這是我的問題:以后我該怎么辦?

我以為我需要讀取第一個套接字,然后在第二個套接字上寫,如此等等,但是我怎么知道第一個客戶端是否在套接字上寫呢? 同樣,我如何知道第二個客戶端是否讀取了第二個套接字?

我不需要代碼,我只想知道執行此操作的好方法。

非常感謝您的閱讀!

當執行async_read時,您將指定一個回調,只要有任何數據讀入緩沖區,就將調用該回調(您還應該提供該緩沖區,請查閱async_read的文檔)。 您應該分別為async_write提供回調,以了解何時已發送數據。 因此,從服務器的角度來看,對於“寫入”的客戶端,您應該執行async_read,對於第二個“讀取”的客戶端,您應該執行異步寫入。 使用提供的數據流client1-> server-> client2,很難識別服務器應從哪個客戶端讀取以及向哪個客戶端寫入數據。 由你決定。 例如,您可以選擇第一個連接的客戶端作為作家,第二個作為閱讀器。

您可能要開始使用asio iostreams。 這是異步套接字之上的類似於iostream的高層抽象。

PS:另外,不要忘記在某個地方運行io_service.run()循環。 因為所有的asio回調都在該循環內執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM