Programowanie gniazd w służy do komunikacji między aplikacjami, które działają na różnych . Może być zorientowany na połączenie lub bezpołączeniowy. Ogólnie rzecz biorąc, gniazdo to sposób na ustanowienie połączenia między klientem a serwerem. W tym artykule opowiem Ci wszystko o programowaniu za pomocą gniazd.
Poniższe tematy są omówione w tym artykule:
konwertuj ciąg na datę java
- Co to jest programowanie w gniazdach w Javie?
- Co to jest gniazdo w Javie?
- Programowanie po stronie klienta
- Programowanie po stronie serwera
Co to jest programowanie w gniazdach w Javie?
Programowanie gniazd to sposób łączenia dwóch węzłów w sieci w celu komunikacji między sobą. Jeden gniazdo elektryczne (węzeł) nasłuchuje na określonym porcie pod adresem IP, podczas gdy inne gniazdo elektryczne wyciąga rękę do drugiej osoby, aby utworzyć połączenie.
Serwer tworzy nasłuchiwanie gniazdo podczas klient sięga do serwera. Gniazdo i gniazdo serwera są używane do programowania gniazd zorientowanych na połączenie.
Przyjrzyjmy się teraz podstawowej koncepcji programowania w gniazdach, tj. Gniazda.
Co to jest gniazdo w Javie?
DO gniazdo elektryczne w to punkt końcowy dwukierunkowego łącza komunikacyjnego między dwoma programami działającymi w sieci. ZA gniazdo elektryczne jest powiązany z numerem portu, dzięki czemu warstwa TCP może identyfikować aplikację, do której przeznaczone są dane.
Punkt końcowy to połączenie adresu IP i numeru portu. Pakiet na platformie Java udostępnia klasę,Gniazdo elektryczneimplementuje jedną stronę dwukierunkowego połączenia między programem Java a innym programem w sieci. Klasa znajduje się na szczycie implementacji zależnej od platformy, ukrywając szczegóły dowolnego konkretnego systemu przed programem Java. Korzystając z klasy zamiast polegać na kodzie natywnym, plik może komunikować się w sieci w sposób niezależny od platformy.
Teraz, gdy już wiesz, czym jest Socket w Javie, przejdźmy dalej i zrozummy, w jaki sposób klient komunikuje się z serwerem i jak serwer odpowiada.
Programowanie po stronie klienta
W przypadku programowania po stronie klienta klient najpierw zaczeka na uruchomienie serwera. Gdy serwer będzie już uruchomiony, będzie wysyłać żądania do serwera. Następnie klient będzie czekał na odpowiedź z serwera. To jest cała logika komunikacji klienta i serwera. Przyjrzyjmy się teraz szczegółowo programowaniu po stronie klienta i serwera.
Aby zainicjować żądanie klienta, musisz wykonać poniższe kroki:
1. Ustanów połączenie
Pierwszym krokiem jest ustanowienie połączenia z gniazdem. Połączenie przez gniazdo oznacza, że oba komputery mają informacje o swojej lokalizacji sieciowej (adresie IP) i porcie TCP.
Możesz stworzyć gniazdo za pomocą poniższej instrukcji:
Socket socket = nowy Socket („127.0.0.1”, 5000)
Tutaj pierwszy argument reprezentuje Adres IP serwera .
Drugi argument reprezentuje Port TCP . (Jest to liczba określająca, która aplikacja powinna działać na serwerze).
2. Komunikacja
Aby komunikować się przez połączenie przez gniazdo, strumienie są używane zarówno do wprowadzania, jak i wysyłania danych. Po nawiązaniu połączenia i wysłaniu żądań musisz zamknąć połączenie.
samouczek Big Data dla początkujących
3. Zamykanie połączenia
Połączenie z gniazdem jest jawnie zamykane po wysłaniu komunikatu do serwera.
Zobaczmy teraz, jak napisać program w języku Java do zaimplementowania połączenia przez gniazdo po stronie klienta.
// Program Java dla ClientSide import java.net. * Import java.io. * klasa publiczna ClientProgram {// inicjalizacja gniazd i strumieni wyjściowych prywatnych Socket socket = null private DataInputStream input = null private DataOutputStream out = null // constructor umieścić adres IP i port publiczny Klient (adres ciągu, port int) {// nawiązać połączenie try {gniazdo = nowy Socket (adres, port) System.out.println ('Connected') // pobiera dane wejściowe z terminala input = new DataInputStream (System.in) // wysyła dane wyjściowe do gniazda out = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // ciąg znaków do odczytania wiadomości z wejścia String line = '' // czytaj dalej, aż 'Over' zostanie wprowadzone while (! line.equals ('Over')) {try {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // zamknij połączenie try {input.close () out.close () socket.close ()} catch (IOException ja ) {System.out.println (i)}} public static void main (String args []) {Client client = new Client ('127.0.0.1', 5000)}}
Teraz zaimplementujmy programowanie po stronie serwera, a następnie przejdźmy do wyniku.
Programowanie po stronie serwera
Zasadniczo serwer utworzy instancję swojego obiektu i zaczeka na żądanie klienta. Gdy klient wyśle żądanie, serwer odpowie z odpowiedzią.
Aby zakodować aplikację po stronie serwera, potrzebujesz dwóch gniazd i są one następujące:
DO ServerSocket który czeka na żądania klienta (gdy klient tworzy nową Socket ())
Zwykły stary gniazdo elektryczne do komunikacji z klientem.
Następnie musisz skontaktować się z klientem za pomocą odpowiedzi.
Komunikacja
getOutputStream () Metoda służy do wysyłania danych wyjściowych przez gniazdo.
Zamknij połączenie
Ważne jest, aby zamknąć połączenie, zamykając gniazdo, a także strumienie wejścia / wyjścia, gdy wszystko zostanie wykonane.
Zobaczmy teraz, jak napisać program w języku Java do zaimplementowania połączenia przez gniazdo po stronie serwera.
// Program w języku Java dla strony serwera import java.net. * Import java.io. * klasa publiczna ServerSide {// inicjalizacja gniazda i strumienia wejściowego prywatne Socket socket = null private ServerSocket server = null private DataInputStream in = null // konstruktor z port public Server (int port) {// uruchamia serwer i czeka na połączenie try {server = new ServerSocket (port) System.out.println ('Serwer uruchomiony') System.out.println ('Oczekiwanie na klienta .. . ') socket = server.accept () System.out.println (' Klient zaakceptowany ') // pobiera dane wejściowe z gniazda klienta in = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) String line =' '/ / czyta wiadomość od klienta aż do wysłania 'Over', podczas gdy (! line.equals ('Over')) {try {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ('Zamykanie połączenia') // zamknij połączenie socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} public static void main (String args []) { Serwer serwer = nowy serwer (5000)}}
Po skonfigurowaniu zarówno klienta, jak i serwera, można najpierw uruchomić program po stronie serwera. Następnie musisz uruchomić program po stronie klienta i wysłać żądanie. Jak tylko żądanie zostanie wysłane z końca klienta, serwer odpowie. Poniżej migawka przedstawia to samo.
1. Po uruchomieniu skryptu po stronie serwera rozpocznie się on i zaczeka na uruchomienie klienta.
2. Następnie klient połączy się i wprowadzi żądanie w postaci łańcucha.
3. Gdy klient wyśle żądanie, serwer odpowie.
W ten sposób musisz uruchomić program używający gniazd w Javie. Możesz również uruchamiać te programy w oknie terminala lub w wierszu polecenia. Ale ponieważ Eclipse jest bardzo zaawansowany w swoich funkcjach, możesz po prostu uruchomić oba programy na konsoli.
t typ danych sql date
To prowadzi nas do końca artykułu o programowaniu za pomocą gniazd w Javie. Mam nadzieję, że rzuciłem trochę światła na twoją wiedzę Programowanie gniazd.
Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży, aby zostać oprócz tych pytań do wywiadu Java, opracowaliśmy program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego artykułu „Programowanie gniazd w Javie”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.