I am trying to achieve a full-duplex client-server communication scheme, on 2 different machines (only), where each end-point (client or server) can send stuff at any time,
I think When you async-communication, you have to use two pipe.
One is recv pipe another is send pipe
Because, You don't know when you recv data.
When you send some data with one pipe, recv data can not write on pipe.
In contrast, you can not write send data on pipe.
therefore you have to two pipe for async communication.