https://123dok.org/document/q2n05lv6-concurrent-programming-short-tutorial-socket-programming-giuseppe-lipari.html