Dezvoltarea de aplicatii Java Client/Server cu TCP. Partea 2.
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.
10 Mar 2020
1182
Other articles
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA. Persistence cu JPA
Cum sa interogam Kafka Streaming Data?
Procrastinarea. Care sunt avantajele ei?
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA
Procrastinarea
Cerinte. De ce avem nevoie de ele?
Dezvolta-ti abilitatile cu training-urile noastre
Programarea reactiva Java. Implementari
Testarea software. Intrebari tipice si raspunsuri. Continuare
Testarea software. Intrebari tipice si raspunsuri
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.
Cand un program Java vrea sa stabileasca o conexiune TCP intre doua calculatoare cu sockets, acesta urmeaza pasii de mai jos:
Clasa ServerSocket poate sa fie instantiata prin constructorii din tabelul de mai jos:
Cele mai importante metode ale clasei ServerSocket sunt in tabelul de mai jos:
Clasa Socket poate sa fie instantiata prin constructorii din tabelul de mai jos:
Cele mai importante metode ale clasei Socket sunt prezentate in tabelul de mai jos:
Java and Web Technologies Expert
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. |
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