1. socket would block at send(), return -1 when set MSG_DONTWAIT 2. changed to ~MSG_DONTWAIT, send() will block until all payload send over 3. recv() should keep MSG_DONTWAIT attribute, otherwise will lead to low thoughtput