Что такое сокет в java?
Интерфейс обмена данными.
Грубо говоря, ты можешь отправлять данные по протоколу HTTP, а можешь отправлять по сокету, сокет состоит из IP и порта. Для чего это нужно? IP нужен для определение устройства в сети, у каждого устройства есть IP адрес, по которому это устройство доступно. Так вот когда мы нашли устройство по ИП адресу, теперь нам нужно определить клиент, программу, с которой будем обмениваться данными, для этого и нужен порт, порт отвечает за "обнаружние" программы. 
Теперь мы можеот отправлять и получать данные на сокет, для этого нужно создать соединения обеих сторон, в отличи от HTTP, данные может отправлять не только клиент, но и сервер. 
Это если вкратце.
Сокет в Java ничем не отличается от сокетов в других языках.
Аналогия в жизни сокета- грубо говоря это гнездо\разъем на какой то железке, к примеру на обычном роутере. Естественно у этого роутера все разъемы пронумерованы(в понятии сокета это номер порта 0-65535). Вы втыкаете патчкорд в свободный порт роутера а другой конец в свободный порт своего ПК. Так произошло сокетное соединение соединение.