Какие классы обеспечивают работу Socket

«Какие классы обеспечивают работу Socket» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android для работы с сокетами используются классы из пакета java.net:

  1. Socket - клиентский сокет для установки соединения с сервером:
Socket socket = new Socket("192.168.1.1", 8080);
  1. ServerSocket - серверный сокет для ожидания подключений:
ServerSocket serverSocket = new ServerSocket(8080);
Socket clientSocket = serverSocket.accept();
  1. DatagramSocket - для UDP-соединений

Основные операции:

  • getInputStream()/getOutputStream() - получение потоков ввода/вывода
  • connect()/bind() - установка соединения
  • close() - закрытие сокета

Важно:

  • Работа с сетью требует разрешения INTERNET в манифесте
  • Сетевые операции нельзя выполнять в UI-потоке (используйте AsyncTask, Coroutines и т.д.)
  • После использования сокеты нужно закрывать в finally-блоке