Explication détaillée de la prise de programmation réseau
Cet article présente principalement les méthodes de classe et les exemples de programmation réseau Java. Les amis qui en ont besoin peuvent s'y référer
La programmation réseau fait référence à l'écriture de programmes qui s'exécutent sur plusieurs appareils (ordinateurs). via Internet.
L'API J2SE du package java.net contient des classes et des interfaces qui fournissent des détails de communication de bas niveau. Vous pouvez utiliser ces classes et interfaces directement pour vous concentrer sur la résolution de problèmes plutôt que sur les détails de la communication.
Le package java.net prend en charge deux protocoles réseau courants :
TCP : TCP est l'abréviation de Transmission Control Protocol. communication fiable entre deux applications. Couramment utilisé pour les protocoles Internet, appelés TCP/IP.
UDP : UDP est l'abréviation de User Datagram Protocol, un protocole sans connexion. Fournit des paquets de données à envoyer entre les applications.
Ce tutoriel explique principalement les deux sujets suivants.
Programmation de socket : Il s'agit du concept de réseau le plus largement utilisé et il a été expliqué en détail
Gestion des URL : Cette partie sera abordée dans un autre espace. Cliquez ici pour en savoir plus sur le traitement des URL en langage Java.
Programmation de sockets
Les sockets fournissent un mécanisme de communication entre deux ordinateurs utilisant TCP. Le programme client crée un socket et tente de se connecter au socket du serveur.
Lorsque la connexion est établie, le serveur créera un objet Socket. Le client et le serveur peuvent désormais communiquer en écrivant et en lisant dans l'objet Socket.
La classe java.net.Socket représente un socket, et la classe java.net.ServerSocket fournit un mécanisme permettant aux programmes serveur d'écouter les clients et d'établir des connexions avec eux.
Les étapes suivantes se produisent lors de l'établissement d'une connexion TCP à l'aide de sockets entre deux ordinateurs :
Le serveur instancie un objet ServerSocket, représentant un port sur la communication du serveur.
Le serveur appelle la méthode accept() de la classe ServerSocket, qui attendra que le client se connecte au port donné sur le serveur.
Pendant que le serveur attend, un client instancie un objet Socket et spécifie le nom du serveur et le numéro de port pour demander une connexion.
Le constructeur de la classe Socket tente de connecter le client au serveur et au numéro de port spécifiés. Si la communication est établie, un objet Socket est créé sur le client pour communiquer avec le serveur.
Côté serveur, la méthode accept() renvoie une nouvelle socket référence sur le serveur, qui est connecté au socket du client.
Une fois la connexion établie, la communication s'effectue à l'aide de flux d'E/S. Chaque socket possède un flux de sortie et un flux d’entrée. Le flux de sortie du client est connecté au flux d'entrée du serveur et le flux d'entrée du client est connecté au flux de sortie du serveur.
TCP est un protocole de communication bidirectionnel, de sorte que les données peuvent être envoyées via deux flux de données en même temps. Ce qui suit est un ensemble complet de méthodes utiles fournies par certaines classes pour implémenter des sockets.
Méthodes de la classe ServerSocket
L'application serveur obtient un port en utilisant la classe java.net.ServerSocket et écoute les demandes des clients.
La classe ServerSocket a quatre méthodes de constructeur :
|
Description de la méthode | ||||||||||
1 | public ServerSocket (port int) lève IOException Créer un socket serveur lié à un port spécifique | ||||||||||
2 | public ServerSocket (int port, int backlog) lève IOException Créez un socket serveur en utilisant le backlog spécifié et liez-le au numéro de port local spécifié | ||||||||||
3 | public ServerSocket (port int, backlog int, adresse InetAddress) lance IOExceptionCrée un serveur avec le port spécifié, le backlog d'écoute et l'adresse IP locale à laquelle se lier | ||||||||||
4 | public ServerSocket() lève IOExceptionCréer un socket serveur indépendant |
Créez un socket de serveur indépendant. Si la méthode de construction ServerSocket ne lève pas d'exception , cela signifie que votre application s'est liée avec succès au port spécifié et écoute les demandes des clients.
Voici quelques méthodes courantes de la classe ServerSocket :
|
Méthode description | ||||||||||||
1 |
public int getLocalPort() Renvoie le port sur lequel ce socket écoute |
||||||||||||
2 | public Socket accept() lance IOException Écoutez et acceptez cette connexion de socket |
||||||||||||
3 |
public void setSoTimeout(int timeout)
|
||||||||||||
4 | public void bind (hôte SocketAddress, int backlog) Lier ServerSocket à une adresse spécifique (adresse IP et numéro de port) |
Numéro de série | Description de la méthode |
1 | public Socket (String host, int port) lance UnknownHostException, IOException. Crée un socket de flux et le connecte au numéro de port spécifié sur l'hôte spécifié |
2 | public Socket (hôte InetAddress, port int) lance IOExceptionCrée un socket de flux et le connecte au numéro de port spécifié de l'adresse IP spécifiée td> |
3 | public Socket (String host, int port, InetAddress localAddress, int localPort) renvoie IOException. >Crée un socket et le connecte au port distant spécifié sur l'hôte distant spécifié |
4 | public Socket (hôte InetAddress, port int, InetAddress localAddress, int localPort) lance IOExceptionCrée un socket et le connecte à l'adresse distante spécifiée |
5 | public Socket()passé Le type système par défaut de SocketImpl crée un prise non connectée |
Lorsque le constructeur Socket revient, il n'instancie pas simplement un objet Socket, il essaiera en fait de se connecter au serveur et au port spécifiés.
Certaines méthodes intéressantes sont répertoriées ci-dessous. Notez que le client et le serveur ont tous deux un objet Socket, donc le client et le serveur peuvent appeler ces méthodes.
|
Description de la méthode | ||||||||||||||||||
1 |
public void connect (hôte SocketAddress, int timeout) lance IOException Connectez ce socket au serveur et spécifiez une valeur de délai d'attente |
||||||||||||||||||
2 | public InetAddress getInetAddress()
|
||||||||||||||||||
3 | public int getPort()Retour à cet ensemble Le port distant auquel l'interface est connectée | ||||||||||||||||||
4 | public int getLocalPort() Renvoie le port local auquel ce socket est lié | ||||||||||||||||||
5 | public SocketAddress getRemoteSocketAddress() Renvoie l'adresse du point de terminaison connecté à ce socket, ou null s'il n'est pas connecté | ||||||||||||||||||
6 | public InputStream getInputStream() lance IOExceptionRenvoie le flux d'entrée de cette socket | ||||||||||||||||||
7 | public OutputStream getOutputStream() lance IOExceptionRenvoie le flux de sortie de ce socket | ||||||||||||||||||
8 | public void close() lance IOException Fermez ce socket |
Description de la méthode | |
1 | static InetAddress getByAddress(byte[] addr)Étant donné l'adresse IP d'origine, renvoie Objet InetAddress |
2 | statique InetAddress getByAddress(String host, byte[] addr)Crée une InetAddress basée sur le nom d'hôte et l'adresse IP fournis |
3 | static InetAddress getByName(String host)Déterminez l'hôte en fonction de l'adresse IP du nom d'hôte |
4 | String getHostAddress( )Adresse IP de retourChaîne (exprimée sous forme de texte) |
5 | String getHostName() Obtenir le nom d'hôte de cette adresse IP |
6 td>static InetAddress getLocalHost()Retour de l'hôte local | |
7 | String toString()Convertir cette adresse IP en String |
Instance client Socket
Le GreetingClient suivant est un programme client qui se connecte au serveur via socket et envoie une requête, puis attend une réponse.
// 文件名 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(); } } }
Instance de serveur Socket
Le programme GreetingServer suivant est une application côté serveur qui utilise Socket pour écouter un port spécifié.
// 文件名 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() + "..."); 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(); } } }
Compilez le code Java ci-dessus et exécutez la commande suivante pour démarrer le service, en utilisant le numéro de port 6066 :
$ java GreetingServer 6066 Waiting for client on port 6066...
Ouvrez-le comme ci-dessous Client :
$ 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!
[Recommandations associées]
2.Tutoriel vidéo sur l'implémentation de vignettes d'images dans des proportions égales en Java
3.Manuel de développement Java Alibaba
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo
