Socket
и ServerSocket
. Socket
– клиентское подключение. Отправляет запросы и получает ответы с заданного порта/адреса по TCP/IP-соединению. Наследники могут реализовывать протоколы более высокого уровня сетевого стека, например SSLSocket
. Похож на утилиту netcat
из Unix-систем. Обслуживает одно подключение к серверу, обменивается данными через InputStream
и OutputStream
.ServerSocket
– сервер, приёмник подключений. Занимает на машине заданный свободный порт, и в одиночку принимает все подключения к нему. Опционально можно задать свой адрес, если текущая машина доступна по нескольким, а сокет должен быть доступен только по одному из них.Ключевой метод серверного сокета –
accept()
. Вызов этого метода блокирует исполнение до тех пор, пока не придет новый запрос от клиента. Возвращает пришедший запрос в виде экземпляра класса Socket
. Чтобы сделать сервер параллельным, accept()
должен вызываться в параллельных потоках.Стандартную внутреннюю реализацию сокетов можно подменить, установив для них статическую фабрику типа
SocketImplFactory
, методом setSocketFactory()
.Для высокоуровневых (HTTP, FTP) запросов в стандартной библиотеке есть класс
URLConnection
и его наследники.Полный пример клиент-серверного приложения доступен в туториале на сайте Oracle.