Najlepszy samouczek Java Programming Network W 2024 r. W tym samouczku możesz dowiedzieć się gniazdo programowania,Metody klasy ServerSocket,Metody klasy Socket,metoda klasy InetAddress,Gniazdo instancji klienta,Gniazdo wystąpienie serwera,
Programowanie sieciowe oznacza napisać uruchomić na wielu urządzeniach (komputer) programu, urządzenia te są połączone za pośrednictwem sieci.
Pakiet java.net w API J2SE zawiera klasy i interfejsy, które dostarczają dane komunikacyjne niskiego poziomu. Można korzystać z tych klas i interfejsów, aby skupić się na rozwiązywaniu problemu, zamiast skupiać się na szczegółach komunikacyjnych.
Pakiet java.net zapewnia obsługę dwóch popularnych protokołów sieciowych:
Ten poradnik opisuje następujące dwa tematy.
Gniazdka użyciu TCP zapewnia mechanizm komunikacji między dwoma komputerami. Program kliencki tworzy gniazdo i próbuje podłączyć do gniazda serwera.
Po nawiązaniu połączenia, serwer utworzy obiekt Socket. Klient i serwer mogą teraz pisać i czytać obiekt Socket komunikowania.
Klasa java.net.Socket reprezentuje gniazdo i dostarcza klasę java.net.ServerSocket na nasłuchiwanie programu klient-serwer, oraz stworzyć mechanizm, aby połączyć się z nimi.
Występuje, gdy połączenie TCP, wykonując następujące kroki w celu ustanowienia gniazdo między dwoma komputerami:
TCP to protokół komunikacji dwukierunkowej, więc dane mogą być wysyłane za pośrednictwem dwóch strumieni danych jednocześnie. Poniżej znajduje się pełna klasa udostępnia kilka przydatnych metod, aby osiągnąć gniazd.
Aplikacje serwerem za pomocą klasy java.net.ServerSocket do portu i nasłuchuje żądań klienta.
Klasa ServerSocket ma cztery konstruktorów:
Nie. | metoda Opis |
1 | ServerSocket publicznych (int port) rzuca IOException Tworzenie wiązania do określonego portu gniazda serwera. |
2 | ServerSocket publicznych (int port int backlog ) wyrzuca IOException Z podanej zaległości tworzy gniazdo serwera i wiąże się z określonym numerem portu lokalnego. |
3 | ServerSocket publicznych (int port int backlog , InetAddress adres) rzuca IOException Korzystanie z określonego portu, słuchać zaległości, a także wiązać się z lokalnym adresem IP serwera jest tworzony. |
4 | ServerSocket publicznego () wyrzuca IOException Tworzy niezwiązanego gniazdo serwera. |
Tworzy niezwiązanego gniazdo serwera. Jeśli metoda konstruktora ServerSocket nie wyjątek, oznacza to, że aplikacja została pomyślnie zobowiązany do określonego portu i nasłuchuje żądań klienta.
Oto kilka typowych metod klasy ServerSocket:
Nie. | metoda Opis |
1 | public int getLocalPort () Zwraca port, na którym nasłuchuje to gniazdo. |
2 | Gniazdo publicznego accept () wyrzuca IOException Słucha i akceptuje tego gniazda. |
3 | public void setSoTimeout (int timeout) Określając wartość limitu czasu, aby włączyć / wyłączyć SO_TIMEOUT w milisekundach. |
4 | public void bind (hosta SocketAddress, int backlog) Wiąże ServerSocket do konkretnego adresu (adres IP i numer portu). |
java.net.Socket klasy imieniu klienta i serwera, aby komunikować się ze sobą w gnieździe. Aby uzyskać obiekt Socket klienckiej przy uruchamianiu i serwera, aby uzyskać obiekt Socket jest zwracany przez wartość metoda accept ().
Klasa Socket posiada pięć konstruktorów.
Nie. | metoda Opis |
1 | Gniazdo publicznych (String host, int port ) wyrzuca UnknownHostException, IOException. Tworzy gniazdo Stream i łączy go z określonym numerem portu na określonym komputerze. |
2 | Gniazdo publicznych (host InetAddress, int port ) throws IOException Tworzy gniazdo Stream i łączy go z określonym adresem IP określonym numerem portu. |
3 | Gniazdo publicznych (String host, int port , InetAddress lokalnego adresu, int LocalPort) wyrzuca IOException. Tworzy gniazdo i łączy je do określonego portu zdalnego określonego zdalnego hosta. |
4 | Gniazdo publicznych (host InetAddress, int port , InetAddress lokalnego adresu, int LocalPort) wyrzuca IOException. Tworzy gniazdo i łączy je do określonego portu zdalnego określonego zdalnego adresu. |
5 | Gniazdo publicznego () Tworzenie niepodłączone gniazdo, domyślny typ systemu SocketImpl |
Gdy gniazda konstruktor powraca, a nie po prostu instancję obiektu Socket, to rzeczywiście próbować połączyć się z serwerem i określonego portu.
Oto kilka metod zainteresowania, należy zwrócić uwagę na klienta i serwer ma obiekt Socket, niezależnie od klienta lub serwera można nazwać tych metod.
Nie. | metoda Opis |
1 | public void connect (hosta SocketAddress, int timeout) rzuca IOException Ta gra gniazdo z serwerem i określić wartość limitu czasu. |
2 | publicznego InetAddress getInetAddress () Adres zwrotny połączenia sieciowego. |
3 | public int getPort () Zwraca to gniazdo jest podłączone do zdalnego portu. |
4 | public int getLocalPort () Zwraca to gniazdo jest związana z miejscowym porcie. |
5 | publicznego SocketAddress getRemoteSocketAddress () Adres zwrotny od punktu końcowego to gniazdo jest połączone, jeżeli jest to niezwiązane zwraca null. |
6 | public InputStream getInputStream () wyrzuca IOException Zwraca strumień wejściowy dla tego gniazda. |
7 | public OutputStream getOutputStream () wyrzuca IOException Zwraca strumień wyjściowy dla tego gniazda. |
8 | public void close () wyrzuca IOException Zamknięcie tego gniazda. |
Klasa ta reprezentuje Internet Protocol (IP). Poniżej wymienione są użyteczne, gdy metoda programowania Gniazdo:
Nie. | metoda Opis |
1 | statyczne InetAddress getByAddress (byte [] addr ) W przypadku, ze względu na surowe adres IP, wróć obiekt InetAddress. |
2 | statyczne InetAddress getByAddress (String host, byte [] addr) Według utworzyć nazwy hostów i adresy IP InetAddress dostarczone. |
3 | statyczne InetAddress getByName (String host) Określ adres IP hosta w przypadku danej nazwy hosta. |
4 | GetHostAddress String () Zwraca ciąg adresów IP (prezentacja tekstowa). |
5 | String gethostname () Pobiera nazwę hosta dla tego adresu IP. |
6 | statyczne InetAddress getLocalHost () Zwraca lokalny gospodarz. |
7 | String toString () Przekształca ten adres IP String. |
Poniższy GreetingClient to klient, który jest podłączony przez gniazdo z serwerem i wysyła żądanie, a następnie czekać na odpowiedź.
// 文件名 GreetingClient.java import java.net.*; import java.io.*; public class GreetingClient { public static void main(String [] args) { String serverName = args[0]; int port = Integer.parseInt(args[1]); try { System.out.println("Connecting to " + serverName + " on port " + port); Socket client = new Socket(serverName, port); System.out.println("Just connected to " + client.getRemoteSocketAddress()); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF("Hello from " + client.getLocalSocketAddress()); InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("Server says " + in.readUTF()); client.close(); }catch(IOException e) { e.printStackTrace(); } } }
Poniższy program GreetingServer jest aplikacją po stronie serwera, który używa gniazda do słuchania na określonym porcie.
// 文件名 GreetingServer.java import java.net.*; import java.io.*; public class GreetingServer extends Thread { private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); serverSocket.setSoTimeout(10000); } public void run() { while(true) { try { System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "pl."); Socket server = serverSocket.accept(); System.out.println("Just connected to " + server.getRemoteSocketAddress()); DataInputStream in = new DataInputStream(server.getInputStream()); System.out.println(in.readUTF()); DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress() + "\nGoodbye!"); server.close(); }catch(SocketTimeoutException s) { System.out.println("Socket timed out!"); break; }catch(IOException e) { e.printStackTrace(); break; } } } public static void main(String [] args) { int port = Integer.parseInt(args[0]); try { Thread t = new GreetingServer(port); t.start(); }catch(IOException e) { e.printStackTrace(); } } }
Skompilować powyższy kod Java i wykonaj następujące polecenie, aby uruchomić usługę, należy użyć numeru portu 6066:
$ java GreetingServer 6066 Waiting for client on port 6066pl.Otwarty coś w następujących klientów:
$ java GreetingClient localhost 6066 Connecting to localhost on port 6066 Just connected to localhost/127.0.0.1:6066 Server says Thank you for connecting to /127.0.0.1:6066 Goodbye!