Знайте всичко за Socket Programming в Java



Програмирането на Java Socket се използва за комуникация между приложенията, работещи на различни JRE. Програмирането на Java Socket може да бъде ориентирано към връзка или без връзка.

Програмиране на гнезда в се използва за комуникация между приложенията, които работят на различни . Тя може да бъде или ориентирана към връзка, или без връзка. Като цяло сокетът е начин за установяване на връзка между клиент и сървър. В тази статия ще ви разкажа всичко за Socket Programming.

По-долу са разгледани темите в тази статия:





Какво е програмиране на сокети в Java?

Програмиране на гнезда е начин за свързване на два възела в мрежа за комуникация помежду си. Едно гнездо (възел) слуша на определен порт при IP, докато други гнездо достига до другия, за да създаде връзка.

Комуникация с клиентски сървър - Сокетно програмиране в Java - Edureka



Сървърът формира слушателя гнездо докато клиентът достига до сървъра. Socket и сървър Socket се използват за програмиране на сокет, ориентирано към свързване.

Сега нека разберем основната концепция на Socket Programming, т. Е. Сокет.

Какво е сокет в Java?

ДА СЕ гнездо в е една крайна точка на двупосочна комуникационна връзка между две програми, работещи в мрежата. A гнездо е обвързан с номер на порт, така че TCP слоят да може да идентифицира приложението, към което е предназначено изпращането на данни.



Крайната точка е комбинация от IP адрес и номер на порт. Пакетът в платформата Java предоставя клас,Гнездокойто реализира едната страна на двупосочна връзка между вашата програма Java и друга програма в мрежата. Класът се намира на върха на внедрена платформа, скривайки подробностите за всяка конкретна система от вашата Java програма. Като използвате класа, вместо да разчитате на роден код, вашият могат да комуникират по мрежата по независим от платформата начин.

Сега, след като знаете, какво е Socket в Java, нека преминем по-нататък и да разберем как клиентът комуникира със сървъра и как сървърът реагира обратно.

Програмиране от страна на клиента

В случай на програмиране от страна на клиента, клиентът първо ще изчака сървъра да се стартира. След като сървърът работи и работи, той ще изпрати заявките към сървъра. След това клиентът ще изчака отговора от сървъра. И така, това е цялата логика на комуникацията между клиент и сървър. Сега нека разберем подробно програмирането от страна на клиента и от страна на сървъра.

За да инициирате клиентска заявка, трябва да изпълните следните стъпки:

извлечения за контрол на потока в java

1. Установете връзка

Първата стъпка е да установите сокет връзка. Сокет връзката предполага, че двете машини разполагат с информация за мрежовото местоположение (IP адрес) и TCP порта.

Можете да създадете сокет с помощта на по-долу изявление:

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 адрес и порт публичен клиент (String адрес, int порт) {// установете връзка опитайте {socket = нов Socket (адрес, порт) System.out.println ('Connected') // взема вход от терминал input = new DataInputStream (System.in) // изпраща изход към гнездото = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // низ за четене на съобщение от вход String line = '' // продължавайте да четете, докато не се въведе 'Over', докато (! line.equals ('Over')) {try {line = input.readLine ( ) out.writeUTF (линия)} catch (IOException i) {System.out.println (i)}} // // затворете връзката, опитайте {input.close () out.close () socket.close ()} catch (IOException i ) {System.out.println (i)}} публична статична void main (String args []) {Client client = new Client ('127.0.0.1', 5000)}}

Сега, нека да приложим програмиране от страна на сървъра и след това да стигнем до изхода.

Програмиране от страна на сървъра

По принцип сървърът ще създаде екземпляр на своя обект и ще изчака заявката на клиента. След като клиентът изпрати заявката, сървърът ще комуникира обратно с отговора.

За да кодирате приложението от страна на сървъра, се нуждаете от два сокета и те са както следва:

  • ДА СЕ ServerSocket което чака заявките на клиента (когато клиент направи нов Socket ())

  • Обикновен стар гнездо за комуникация с клиента.

След това трябва да комуникирате с клиента с отговора.

Комуникация

getOutputStream () метод се използва за изпращане на изхода през сокета.

Затворете връзката

Важно е да затворите връзката чрез затваряне на сокета, както и входно / изходни потоци, след като всичко е направено.

Сега нека видим как да напишем Java програма за реализиране на сокет връзка от страна на сървъра.

// Java програма за Serverside import java.net. * Import java.io. * public class ServerSide {// инициализиране на сокет и входен поток private Socket socket = null private ServerSocket server = null private DataInputStream in = null // конструктор с порт публичен сървър (int порт) {// стартира сървър и изчаква връзка опитайте {сървър = нов ServerSocket (порт) System.out.println ('Сървърът е стартиран') System.out.println ('Изчаква се клиент .. . ') socket = server.accept () System.out.println (' Клиентът е приет ') // взема вход от клиентския сокет в = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) String line = '' / / чете съобщение от клиента, докато не бъде изпратено 'Over', докато (! line.equals ('Over')) {try {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)}} публична статична void main (String args []) { Сървър сървър = нов сървър (5000)}}

След конфигуриране както на клиента, така и на сървъра, можете първо да изпълните програмата от страна на сървъра. След това трябва да стартирате клиентска програма и да изпратите заявката. Веднага след като заявката бъде изпратена от края на клиента, сървърът ще отговори обратно. По-долу моментната снимка представлява същото.

1. Когато стартирате скрипта от страна на сървъра, той ще се стартира и изчака клиентът да започне.

2. След това клиентът ще се свърже и въведе заявката под формата на низ.

как да зададете Java classpath -

3. Когато клиентът изпрати заявката, сървърът ще отговори обратно.

Ето как трябва да изпълните сокет програма в Java. Можете също да изпълнявате тези програми в терминален прозорец или в команден ред. Но тъй като Eclipse е добре напреднал със своите функции, можете просто да изпълнявате двете програми на конзола.

Това ни води до края на статията за Socket Programming в Java. Надявам се да съм хвърлил малко светлина върху вашите знания Програмиране на гнезда.

Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Ние сме тук, за да ви помогнем във всяка стъпка по вашето пътуване, за да станете освен тези въпроси за интервю за Java, измислим учебна програма, предназначена за студенти и професионалисти, които искат да бъдат Java Developer.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на тази статия „Програмиране на сокети в Java“ и ние ще се свържем с вас възможно най-скоро.