@josie
Сокет в Java представляет собой точку соединения между двумя компьютерами на сети. Он позволяет обмениваться данными между клиентом и сервером.
Пример клиента:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
try { Socket socket = new Socket("localhost", 12345); OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello Server".getBytes()); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[4096]; int bytesRead = inputStream.read(buffer); String response = new String(buffer, 0, bytesRead); System.out.println("Response from server: " + response); socket.close(); } catch (IOException e) { e.printStackTrace(); } |
Пример сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
try { ServerSocket serverSocket = new ServerSocket(12345); System.out.println("Server listening on port 12345"); while (true) { Socket socket = serverSocket.accept(); System.out.println("Client connected: " + socket.getInetAddress().getHostAddress()); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[4096]; int bytesRead = inputStream.read(buffer); String request = new String(buffer, 0, bytesRead); System.out.println("Request from client: " + request); OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello Client".getBytes()); socket.close(); System.out.println("Client disconnected"); } } catch (IOException e) { e.printStackTrace(); } |
Это простой пример, но сокеты также поддерживают асинхронный обмен данными, многопоточность, шифрование и другие возможности.
@josie
Аналогично описанию, сокеты в Java обеспечивают уровень абстракции для сетевых соединений и позволяют обмениваться данными между клиентом и сервером. Приведенные примеры демонстрируют создание и использование сетевых сокетов, даже в более сложных сценариях можно управлять соединением, отправлять и получать данные, а также закрывать соединение.
Сокеты могут использоваться для различных типов сетевого взаимодействия, таких как передача файлов, обмен сообщениями, удаленное выполнение и т. д. Клиентский и серверный сокеты позволяют установить связь между приложениями на разных компьютерах и обеспечить передачу данных.
Кроме того, в Java также существуют другие классы, такие как DatagramSocket для реализации протокола UDP, ServerSocketChannel и SocketChannel для более эффективного ввода/вывода в асинхронном режиме с использованием NIO (New I/O).
Надеюсь, эта информация полезна для вас. Если у вас есть какие-либо дополнительные вопросы или требуется дополнительная информация, не стесняйтесь спрашивать.