Класс Socket
Класс Socket из пакета java.net представляет
собой клиентскую точку соединения. Он используется для
установки связи с удалённым сервером по протоколу TCP.
В первом параметре конструктора мы передаём имя хоста
или IP-адрес сервера, во второй - номер порта, к которому
нужно подключиться. После создания объекта сокета можно
получить входной поток через метод getInputStream
и выходной поток через метод getOutputStream,
чтобы читать и отправлять данные. По завершении работы
сокет следует закрыть методом close.
Синтаксис
Socket socket = new Socket(String host, int port);
Socket socket = new Socket(InetAddress address, int port);
Пример
Давайте создадим сокет, подключимся к серверу на локальном хосте и проверим, что соединение установлено:
import java.net.Socket;
public class Main
{
public static void main(String[] args)
{
try
{
Socket socket = new Socket("localhost", 8080);
boolean res = socket.isConnected();
System.out.println(res);
socket.close();
}
catch (Exception e)
{
System.out.println("Connection failed");
}
}
}
Результат выполнения кода:
true
Пример
Давайте получим информацию о удалённом хосте и порте, к которому подключён сокет:
import java.net.Socket;
public class Main
{
public static void main(String[] args)
{
try
{
Socket socket = new Socket("localhost", 8080);
System.out.println(socket.getInetAddress().getHostAddress());
System.out.println(socket.getPort());
socket.close();
}
catch (Exception e)
{
System.out.println("Connection failed");
}
}
}
Результат выполнения кода:
"127.0.0.1"
8080
Пример
Давайте отправим строку на сервер и получим ответ через потоки ввода-вывода сокета:
import java.net.Socket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main
{
public static void main(String[] args)
{
try
{
Socket socket = new Socket("localhost", 8080);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
out.println("12345");
String res = in.readLine();
System.out.println(res);
socket.close();
}
catch (Exception e)
{
System.out.println("Connection failed");
}
}
}
Результат выполнения кода:
"12345"
Смотрите также
-
класс
ServerSocket,
который принимает входящие соединения -
класс
InetAddress,
который представляет IP-адрес -
метод
getByName,
который возвращает адрес по имени хоста -
класс
URL,
который представляет адрес ресурса в сети