Программирование сокетов в используется для связи между приложениями, работающими на разных . Он может быть ориентированным на соединение или без установления соединения. По сути, сокет - это способ установить соединение между клиентом и сервером. В этой статье я расскажу вам все о программировании сокетов.
В этой статье рассматриваются следующие темы:
- Что такое программирование сокетов в Java?
- Что такое сокет в Java?
- Клиентское программирование
- Программирование на стороне сервера
Что такое программирование сокетов в Java?
Программирование сокетов это способ соединения двух узлов в сети для связи друг с другом. Один разъем (узел) прослушивает определенный порт на IP, в то время как другие разъем обращается к другому, чтобы установить связь.
Сервер формирует слушателя сокет пока клиент обращается к серверу. Сокет и сокет сервера используются для программирования сокетов с установлением соединения.
Теперь давайте разберемся с основной концепцией программирования сокетов, то есть сокетом.
Что такое сокет в Java?
К разъем в является одной из конечных точек двусторонней связи между двумя программами, работающими в сети. А разъем привязан к номеру порта, чтобы уровень TCP мог идентифицировать приложение, в которое должны быть отправлены данные.
Конечная точка - это комбинация IP-адреса и номера порта. Пакет на платформе Java предоставляет класс,Разъемкоторый реализует одну сторону двустороннего соединения между вашей программой Java и другой программой в сети. Класс находится на вершине платформенно-зависимой реализации, скрывая детали любой конкретной системы от вашей Java-программы. Используя класс вместо того, чтобы полагаться на собственный код, вы могут общаться по сети независимо от платформы.
Теперь, когда вы знаете, что такое Socket в Java, давайте продвинемся дальше и разберемся, как клиент взаимодействует с сервером и как сервер отвечает.
Клиентское программирование
В случае программирования на стороне клиента клиент сначала будет ждать запуска сервера. После того, как сервер будет запущен, он отправит запросы на сервер. После этого клиент будет ждать ответа от сервера. Итак, в этом вся логика взаимодействия клиента и сервера. Теперь давайте подробно разберемся с программированием на стороне клиента и на стороне сервера.
Чтобы инициировать запрос клиентов, вам необходимо выполнить следующие шаги:
1. Установите соединение
Самый первый шаг - установить соединение через сокет. Соединение через сокет подразумевает, что две машины имеют информацию о сетевом местоположении друг друга (IP-адрес) и TCP-порте.
Вы можете создать Socket с помощью следующего оператора:
Socket socket = новый Socket («127.0.0.1», 5000)
Здесь первый аргумент представляет IP-адрес Сервера .
Второй аргумент представляет TCP порт . (Это число, обозначающее, какое приложение должно работать на сервере.)
2. Связь
Для связи через соединение сокета потоки используются как для ввода, так и для вывода данных. После установления соединения и отправки запросов вам необходимо закрыть соединение.
3. Закрытие соединения
Соединение сокета явно закрывается после отправки сообщения на сервер.
Теперь давайте посмотрим, как написать программу на Java для реализации сокетного соединения на стороне клиента.
// Программа Java для ClientSide import java.net. * Import java.io. * public class ClientProgram {// инициализируем сокет и потоки ввода-вывода private Socket socket = null private DataInputStream input = null private DataOutputStream out = null // конструктор установить IP-адрес и порт public Client (String address, int port) {// установить соединение try {socket = new Socket (address, port) System.out.println ('Connected') // принимает входные данные с терминала input = new DataInputStream (System.in) // отправляет вывод в сокет out = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // строка для чтения сообщения из ввода String line = '' // продолжаем чтение, пока не будет введено 'Over' while (! line.equals ('Over')) {try {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // закрываем соединение try {input.close () out.close () socket.close ()} catch (IOException я ) {System.out.println (i)}} public static void main (String args []) {Client client = new Client ('127.0.0.1', 5000)}}
Теперь давайте реализуем программирование на стороне сервера, а затем перейдем к результату.
Программирование на стороне сервера
Обычно сервер создает экземпляр своего объекта и ожидает запроса клиента. Как только клиент отправит запрос, сервер ответит на него.
Чтобы кодировать серверное приложение, вам понадобятся два сокета, и они следующие:
К ServerSocket который ждет клиентских запросов (когда клиент создает новый Socket ())
Старый добрый разъем для общения с клиентом.
После этого вам нужно связаться с клиентом с ответом.
что такое фреймворк в селене
Общение
getOutputStream () используется для отправки вывода через сокет.
Закройте соединение
Когда все будет сделано, важно закрыть соединение, закрыв сокет, а также потоки ввода / вывода.
Теперь давайте посмотрим, как написать программу на Java для реализации сокетного соединения на стороне сервера.
// Программа Java для импорта на стороне сервера java.net. * Import java.io. * public class ServerSide {// инициализируем сокет и входной поток private Socket socket = null private ServerSocket server = null private DataInputStream in = null // конструктор с port public Server (int port) {// запускает сервер и ждет соединения try {server = new ServerSocket (port) System.out.println ('Сервер запущен') System.out.println ('Ожидание клиента .. . ') socket = server.accept () System.out.println (' Клиент принят ') // принимает входные данные из клиентского сокета in = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) String line =' '/ / читает сообщение от клиента до тех пор, пока не будет отправлено 'Over', пока (! line.equals ('Over')) {попробуйте {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ('Закрытие соединения') // закрытие соединения socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} public static void main (String args []) { Сервер server = новый сервер (5000)}}
После настройки как клиентской, так и серверной стороны вы можете сначала запустить программу на стороне сервера. После этого вам необходимо запустить клиентскую программу и отправить запрос. Как только запрос будет отправлен со стороны клиента, сервер ответит обратно. Снимок ниже представляет то же самое.
1. Когда вы запускаете сценарий на стороне сервера, он запускается и ждет, пока клиент не запустится.
2. Затем клиент подключается и вводит запрос в виде строки.
3. Когда клиент отправляет запрос, сервер отвечает.
Вот как вам нужно выполнить программу сокета на Java. Вы также можете запускать эти программы в окне терминала или в командной строке. Но, поскольку Eclipse хорошо развит со своими функциями, вы можете просто запустить обе программы на консоли.
На этом мы подошли к концу статьи о программировании сокетов в Java. Надеюсь, я пролил свет на ваши знания о Программирование сокетов.
Проверьте от Edureka, надежной компании онлайн-обучения с сетью из более чем 250 000 довольных учащихся по всему миру. Мы здесь, чтобы помогать вам на каждом этапе вашего пути. Для того, чтобы стать интересным, помимо вопросов на Java-собеседовании, мы разработали учебную программу, предназначенную для студентов и профессионалов, которые хотят стать Java-разработчиками.
Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев к статье «Программирование сокетов на Java», и мы свяжемся с вами как можно скорее.