1. Deux principaux problèmes de programmation réseau
L'un est de savoir comment localiser avec précision un ou plusieurs hôtes sur le réseau, et l'autre est de savoir comment transmettre des données de manière fiable et efficace après avoir trouvé l'hôte.
Dans le protocole TCP / IP, la couche IP est principalement responsable de l'emplacement de l'hôte réseau et du routage de la transmission de données. L'adresse IP peut déterminer uniquement un hôte sur Internet.
La couche TCP fournit un mécanisme de transmission de données fiable (TCP) ou non fiable (UDP) pour l'application, qui est l'objet principal de la programmation réseau, et n'a généralement pas besoin de se soucier de la façon dont la couche IP traite les données.
Le modèle de programmation réseau le plus populaire est actuellement la structure client / serveur (C / S). Autrement dit, l'une des parties de communication agit comme un serveur pour attendre que le client soumette une demande et répond. Le client s'applique au serveur lorsque le service est nécessaire. Le serveur fonctionne généralement toujours comme un démon, écoutant le port réseau. Une fois qu'un client le demande, il lancera un processus de service pour répondre au client et continuera en même temps à écouter le port de service lui-même afin que les clients ultérieurs puissent également obtenir le service en temps opportun.
2. Deux types de protocoles de transmission: TCP / UDP
TCP est l'abréviation du protocole de contrôle de transfert, un protocole orienté connexion qui assure une transmission fiable. La transmission via le protocole TCP entraîne un ordre de flux de données sans erreur. Une connexion doit être établie entre les deux paires de prises de l'expéditeur et le récepteur afin de communiquer sur la base du protocole TCP. Lorsqu'une prise (généralement une prise de serveur) attend pour établir une connexion, l'autre socket peut nécessiter une connexion. Une fois ces deux prises connectées, elles peuvent effectuer une transmission de données bidirectionnelle et les deux parties peuvent effectuer des opérations d'envoi ou de réception.
UDP est l'abréviation du protocole de datagramme utilisateur. Il s'agit d'un protocole sans connexion. Chaque datagramme est une information indépendante, y compris une adresse de source ou de destination complète. Il est transmis à la destination sur le réseau par n'importe quel chemin possible. Par conséquent, s'il peut atteindre la destination, le temps d'atteindre la destination et l'exactitude du contenu ne peut être garantie.
Comparer:
UDP:
1. Chaque datagramme donne des informations complètes sur l'adresse, il n'est donc pas nécessaire d'établir une connexion entre l'expéditeur et le récepteur.
2. Il y a une limite de taille lorsque DP transmet les données, et chaque datagramme transmis doit être limité à 64 Ko.
3. DP est un protocole peu fiable, et les datagrammes envoyés par l'expéditeur n'arrivent pas nécessairement au récepteur dans le même ordre.
TCP:
1. Pour se connecter au protocole de connexion, une connexion doit être établie avant la transmission des données entre les prises, donc le temps de connexion est requis dans TCP.
2. Limite de taille des données de transmission CP. Une fois la connexion établie, les prises des deux parties peuvent transmettre de grandes données dans un format unifié.
3.CP est un protocole fiable qui garantit que le récepteur obtient complètement correctement toutes les données envoyées par l'expéditeur.
application:
1. TCP a une vitalité extrêmement forte dans la communication du réseau. Par exemple, la connexion distante (Telnet) et le transfert de fichiers (FTP) nécessitent que les données de différentes longueurs soient transmises de manière fiable. Cependant, une transmission fiable a un coût. La vérification de l'exactitude du contenu des données occupera inévitablement le temps de traitement de l'ordinateur et la bande passante du réseau. Par conséquent, l'efficacité de la transmission TCP n'est pas aussi élevée que celle de l'UDP.
2. UDP est simple à utiliser et ne nécessite que moins de supervision, il est donc généralement utilisé dans les applications client / serveur dans des systèmes distribués avec une forte fiabilité dans les LAN. Par exemple, le système de vidéoconférence ne nécessite pas l'exactitude absolue des données audio et vidéo, tant que la cohérence est garantie, il est évidemment plus raisonnable d'utiliser UDP dans ce cas.
3. Programmation du réseau Java basé sur des douilles
1. Est-ce une prise
Deux programmes sur le réseau réalisent l'échange de données via une connexion de communication bidirectionnelle. Une extrémité de ce lien bidirectionnel est appelée une prise. La prise est généralement utilisée pour se connecter entre les clients et les fournisseurs de services. Socket est une interface de programmation très populaire du protocole TCP / IP. Une prise est uniquement déterminée par une adresse IP et un numéro de port.
Cependant, les types de protocoles pris en charge par Socket ne sont pas seulement TCP / IP, il n'y a donc pas de connexion nécessaire entre les deux. Dans l'environnement Java, la programmation de socket se réfère principalement à la programmation réseau basée sur le protocole TCP / IP.
2. Le processus de communication OCKET
Le côté serveur écoute (écoute) s'il existe une demande de connexion sur un certain port. Le côté client émet une demande de connexion au côté serveur et le côté serveur renvoie un message d'acceptation du côté client. Une connexion est établie. Le serveur et le côté client peuvent communiquer entre eux via Send, Write et d'autres méthodes.
Pour une prise entièrement fonctionnelle, il doit inclure la structure de base suivante et son processus de travail comprend les quatre étapes de base suivantes:
(1) Créer une prise;
(2) Ouvrez l'entrée / débit de sortie connectée à la prise;
(3) lire / écrire la prise en fonction d'un certain protocole;
(4) Fermer la prise.
3. Construire une douille
Créer une prise
Java fournit deux classes Socket et Serversocket dans le package java.net, qui sont utilisés pour représenter le client et le serveur pour une connexion bidirectionnelle. Ce sont deux classes très bien emballées et sont très faciles à utiliser. La méthode de construction est la suivante:
Socket (adresse InetAddress, port int);
Socket (adresse InetAddress, port int, flux booléen);
Socket (String Host, int prot);
Socket (String Host, int prot, stream booléen);
Socket (socketImpl Imp)
Socket (String Host, int Port, InetAddress LocalAddr, int localport)
Socket (adresse InetAddress, port int, InetAddress localaddr, int localport)
SERVERSOCKET (int Port);
SERVERSOCKET (int port, backlog int);
SERVERSOCKET (port int, backlog int, InetAddress bindAdDdr)
L'adresse, l'hôte et le port sont l'adresse IP, le nom d'hôte et le numéro de port de l'autre partie dans la connexion bidirectionnelle respectivement. Le flux indique si la prise est une prise de flux ou une prise de datagramme. Localport indique le numéro de port de l'hôte local. LocalAdDR et BindAdDDR sont l'adresse de la machine locale (l'adresse hôte du Serversocket). IMP est la classe parent de la prise. Il peut être utilisé pour créer SERVERSOCKET et créer des sockets. Le nombre représente le nombre maximum de connexions que le serveur peut prendre en charge. Par exemple:
Socket client = new socket ("127.0.0.1", 8888);
SERVERSOCKET Server = new SERVERSocket (8888);
Notez que vous devez être prudent lors de la sélection d'un port. Chaque port fournit un service spécifique. Ce n'est qu'en donnant le port correct que le service correspondant peut être obtenu. Les numéros de port de 0 ~ 1023 sont réservés par le système. Par exemple, le numéro de port du service HTTP est de 80, le numéro de port du service Telnet est de 21 et le numéro de port du service FTP est de 23. Par conséquent, lorsque nous sélectionnons le numéro de port, il est préférable de choisir un nombre supérieur à 1023 pour éviter les conflits.
Si une erreur se produit lors de la création d'une prise, une IOException sera générée et elle doit être traitée dans le programme. Ainsi, lors de la création d'une prise ou de SERVERSOCKET, il est nécessaire de prendre ou de lancer une exception.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.