A socket is a construct for client-server applications. Essentially, a socket represents a communication end-point. When two end-points connect, then two processes can communicate via normal file operations using read and write functions.
What is unique about sockets is that the communicating processes are divided into servers and clients. While a process can be both a server and a client, server-type sockets are different from client-type sockets. Regardless of the mechanism, sockets allow multiple clients to communicate with a single server. Furthermore, each client also has an independent line of communication with the server.
In summary, sockets are a special mechanism that permits a single-server, multiple-client application use normal file operations to accomplish the communication between the server and clients.