https://medium.com/@travelswithkrishna/java-networking-day-15-exploring-network-programming-in-java-8507aa78aca0