На этом шаге мы рассмотрим класс Socket
Ранее мы узнали, как скачивать данные из сети. В ближайших шагах мы узнаем, как написать клиент-серверное приложение. Начнем с клиентской части. Для этого нам понадобится класс Socket. Создать объект этого класса можно несколькими способами:
Socket socket = new Socket(Constants.HOST, Constants.PORT); // Constants.HOST это адрес сервера, к которому мы подсоединяемся. // Constants.PORT это порт, на котором работает приложение на сервере.
В таблице 1 перечислены основные функции класса Socket. С остальными функциями предлагаем ознакомиться самостоятельно.
Функция | Описание |
---|---|
void close() throws IOException | Закрывает сокет. |
boolean isClosed() | Проверяет не закрыт ли сокет. |
InputStream getInputStream() throws IOException | Возвращает поток входных данных. |
OutputStream getOutputStream() throws IOException | Возвращает поток выходных данных. |
boolean isConnected() | Проверяет было ли произведено соединение. |
boolean isInputShutdown() | Проверяет можно ли читать из входного потока. |
void shutdownInput() throws IOException | Закрывает входной поток. Дальнейшая работа с ним невозможна. |
boolean isOutputShutdown() | Проверяет можно ли писать в выходной поток. |
void shutdownOutput() throws IOException | Закрывает выходной поток. Дальнейшая работа с ним невозможна. |
Особое внимание обратим на функции shutdownInput и shutdownOutput. Их часто используют, чтобы явно показать, что будет использоваться только один поток. То есть чаще всего, если нам нужен только входной поток, то лучше закрыть выходной поток. Это является хорошей практикой при передачи данных по сокетам.
На следующем шаге мы приведем пример первого клиентского приложения