Programming network applications using sockets