Класс ServerSocket
Класс ServerSocket используется для создания серверного сокета,
который прослушивает определенный порт и принимает входящие
соединения от клиентов. В конструктор мы передаем номер порта,
который сервер будет слушать. Метод accept блокирует
выполнение программы до тех пор, пока не подключится клиент,
и возвращает объект Socket для обмена данными
с подключившимся клиентом.
Синтаксис
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
Пример
Давайте создадим простой сервер, который слушает порт
8080 и отправляет клиенту приветственное сообщение:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Main
{
public static void main(String[] args)
{
try (ServerSocket serverSocket = new ServerSocket(8080))
{
System.out.println("Server started on port 8080");
try (Socket socket = serverSocket.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true))
{
out.println("Hello, client!");
System.out.println("Client connected");
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода (в консоли сервера):
"Server started on port 8080"
"Client connected"
Пример
Давайте создадим сервер, который принимает несколько подключений подряд и для каждого клиента выводит его адрес:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Main
{
public static void main(String[] args)
{
try (ServerSocket serverSocket = new ServerSocket(8080))
{
for (int i = 0; i < 3; i++)
{
try (Socket socket = serverSocket.accept())
{
System.out.println("Client: " + socket.getInetAddress());
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода (при подключении трех клиентов):
"Client: /127.0.0.1"
"Client: /127.0.0.1"
"Client: /127.0.0.1"
Смотрите также
-
класс
Socket,
который представляет клиентский сокет -
класс
InetAddress,
который представляет IP-адрес -
метод
getByName,
который возвращает адрес по имени хоста -
метод
getLocalHost,
который возвращает локальный адрес