Dezvoltarea de aplicatii Java Client/Server cu TCP. Partea 2.

Cel de-al articol din seria noastra despre dezvoltarea de aplicatii Java Client/Server cu TCP. De data aceasta discutam despre programarea sockets in Java.

Mar 10, 2020 109
Cel de-al articol din seria noastra despre dezvoltarea de aplicatii Java Client/Server cu TCP. De data aceasta discutam despre programarea sockets in Java.

2. Programarea sockets in Java

Un network socket este un endpoint intern pentru trimiterea si primirea de date in cadrul unui nod dintr-o retea.

Cand un program Java vrea sa stabileasca o conexiune TCP intre doua calculatoare cu sockets, acesta urmeaza pasii de mai jos:

  • Serverul instantiaza clasa ServerSocket cu numarul portului.
  • Serverul invoca metoda accept() a clasei ServerSocket si asteapta pana cand un client se conecteaza la server pe acel port.
  • Clientul instantiaza clasa Socket, incercand sa se conecteze la serverul specificat si numarul portului.
  • Pe zona de server, metoda accept() vine cu o referinta catre un socket nou, care sa se conecteze la socket-ul clientului.
  • Tot pe zona de server, metoda accept() ofera un socket nou, care sa se conecteze la socketul client.

Clasa ServerSocket poate sa fie instantiata prin constructorii din tabelul de mai jos:

Constructor  Actiune 
public ServerSocket (int port) genereaza IOException Creaza un server socket legat de un port specific. O exceptie este generata daca portul este legat de o alta aplicatie.
public ServerSocket (int port, int backlog) genereaza IOException Similar cu constructorul anterior, parametrul backlog specifica cati din clientii care vin sunt stocati intr-un wait queue.
public ServerSocket (int port, int backlog, InetAddress address) genereaza IOException Similar cu constructorul anterior, parametrul InetAddress specifica adresa IP locala de care sa se lege. 
public ServerSocket() genereaza IOException Creaza un unbound server socket. Foloseste metoda bind() atunci cand esti gata sa fixezi server socket.

Cele mai importante metode ale clasei ServerSocket sunt in tabelul de mai jos:

Metoda Actiune
public int getLocalPort()  Genereaza portul pe care server socket asculta. Util daca ai 0 ca numar de port intr-un constructor si lasi serverul sa gaseasca un port pentru tine. 
public Socket accept() genereaza IOException Asteapta ca un client sa vina. Blocheaza pana in momentul in care un client se conecteza pe server prin portul specificat sau avem time out la socket, presupunand ca valoarea time-out a fost setata folosind metoda setSoTimeout(). Altfel, aceasta metoda blocheaza continuu.
public void setSoTimeout(int timeout) Seteaza valoarea time-out pentru cat timp server socket asteapta un client in timpul accept().
public void bind(SocketAddress host, int backlog) Leaga socket de serverul si portul specificat in obiectul SocketAddress. Poate sa fie folosit daca instantiem ServerSocket folosind constructorul no-argument.

Dezvoltarea de aplicatii Java Client Server cu TCP 2.jpg


Clasa Socket poate sa fie instantiata prin constructorii din tabelul de mai jos:

Constructor Actiune
public Socket(String host, int port) genereaza UnknownHostException, IOException Creaza un socket catre serverul specificat de la portul specificat. 
public Socket(InetAddress host, int port) genereaza IOException Identic cu constructorul anterior, host-ul este indicat de un obiect InetAddress.
public Socket(String host, int port, InetAddress localAddress, int localPort) genereaza IOException Se conecteaza la host-ul si portul specificat, creand un socket la adresa si portul specificat. 
public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) genereaza IOException Identic cu constructorul anterior, host-ul este indicat de un obiect InetAddress in loc de String.
public Socket() Creaza un socket neconectat. Foloseste metoda connect() ca sa conecteze socket-ul la un server.

Cele mai importante metode ale clasei Socket sunt prezentate in tabelul de mai jos:

Metoda  Actiune
public InputStream getInputStream() genereaza IOException Genereaza input stream al socket. Input stream este conectat la output stream a remote socket.
public OutputStream getOutputStream() genereaza IOException Genereaza output stream a socket. Output stream este conectat la input stream a remote socket.
public void close() genereaza IOException Inchide socket, ceea ce face ca acest Socket object sa nu mai fie capabil sa se conecteze din nou la alt server.

Vrei sa inveti mai multe despre aceasta tehnologie? Descopera cursurile noastre.

Catalin Tudose
Java and Web Technologies Expert

Daca iti place acest articol, distribuie-l si prietenilor tai!




Luxoft Warsaw - Warsaw Spire, plac Europejski 1, 00-844 Warszawa
Dimitrie Pompeiu nr 5-7 , building C, Et. 5, sect 2, Bucharest, 014459

Contact phone:

021 371 4858
Luxoft Poland Wroclaw - Silver Tower pl. Konstytucji 3-go Maja 3 50-048 Wroclaw
Aleja Generała Tadeusza Bora-Komorowskiego 25, Quattro Business Park Five, 31-476 Kraków, Poland

Contact phone:

+48 122110650
Success
Iti multumim.
Inregistrarea ta a fost trimisa.