1. Concepts de réseau de base
Tout d'abord, clarifiez un concept: programmation réseau! = Programmation du site Web, la programmation réseau est désormais généralement appelée programmation TCP / IP.
2. Protocole et interface de communication réseau
3. Idée de superposition de protocole de communication
4. Modèle de référence
V. Protocole IP
L'ordinateur de tout le monde a une adresse IP unique afin que le message d'erreur ne soit pas transmis lors de la communication les uns avec les autres.
Une adresse IP est divisée en quatre segments par un point. L'adresse IP à l'intérieur de l'ordinateur est représentée par quatre octets. Un octet représente un segment, et le nombre maximum représenté par chaque octet ne peut atteindre que 255.
Vi. Protocole TCP et protocole UDP
TCP et UDP sont situés sur la même couche et sont tous deux basés sur la couche IP. Étant donné que les deux ordinateurs ont des adresses IP différentes, les deux ordinateurs peuvent être distingués et peuvent se parler. Il y a généralement deux façons de parler: le premier est TCP et le second est UDP. TCP est une connexion fiable. TCP, c'est comme passer un appel téléphonique. Vous devez d'abord appeler l'autre partie et attendre que l'autre partie réponde avant de continuer à parler à l'autre partie. Autrement dit, vous devez confirmer que vous pouvez envoyer le message avant d'envoyer le message. TCP télécharge tout ce qui est fiable. Tant qu'une connexion est établie sur deux machines, les données envoyées sur la machine seront certainement transmises à la machine de l'autre partie. UDP, c'est comme envoyer un télégramme, et cela se fera s'il est envoyé. Peu importe que l'autre partie le reçoive ou non, donc UDP n'est pas fiable. Bien que TCP transmet des données de manière fiable, elle est transmise lentement. UDP transmet les données peu fiables, mais elles sont transmises rapidement.
7. Programmation à douille
Généralement, la programmation réseau est appelée programmation de socket et le socket signifie «socket» en anglais.
Installez une prise sur les deux ordinateurs, puis branchez les deux extrémités d'un câble dans les prises des deux ordinateurs, afin que les deux ordinateurs puissent établir une connexion. Cette prise est la prise.
Parce qu'ils peuvent communiquer entre eux, j'ai dit que vous êtes mon serveur, mais dans un sens logique, je devrais d'abord vous envoyer les choses, puis vous les gérerez et les transmetrez. Vous l'appelez donc serveur. Mais dans un sens technique, seul TCP divisera le serveur et le client. Pour UDP, dans un sens strict, il n'y a pas de soi-disant serveur et client. Le socket du serveur TCP est appelé Serversocket, et la prise du client est appelée socket.
Lorsque deux ordinateurs sont connectés les uns aux autres, vous devez d'abord connaître leurs adresses IP, mais fournir uniquement des adresses IP ne suffit pas. Vous devez également avoir le numéro de port de la connexion, c'est-à-dire à quelle application se connecter.
Le numéro de port est utilisé pour distinguer différentes applications sur une machine. Le numéro de port occupe 2 octets à l'intérieur de l'ordinateur. Il y a jusqu'à 65536 numéros de port sur une machine. Une demande peut occuper plusieurs numéros de port. Si le numéro de port est occupé par une demande, d'autres applications ne pourront plus utiliser ce numéro de port. N'oubliez pas que si le programme que nous écrivons doit occuper le numéro de port, s'il veut occuper le numéro de port supérieur à 1024, n'occupez pas le numéro de port inférieur à 1024, car le système peut être réquisitionné à tout moment. Le numéro de port lui-même est divisé en port TCP et port UDP. Le port TCP 8888 et le port UDP 8888 sont deux ports complètement différents. Il existe 65536 ports TCP et ports UDP.
8. Modèle de communication de socket TCP
9. Exemples d'utilisation de la prise
Serversocket
import java.net. *; import java.io. *; public class TestSerVersocket {public static void main (String args []) lève l'exception {serversocket ss = new serversocket (6666); / * Lors de la création d'un objet SERVERSOCKET, il est souvent attribué un numéro de port. La signification est d'utiliser le numéro de port que le nouvel objet Serversocket doit utiliser et le numéro de port à écouter la connexion du client. Par conséquent, la signification de la spécification d'un numéro de port est de dire à l'ordinateur où l'objet SERVERSocket écoute la connexion du client. * / * Le côté serveur reçoit les demandes de connexion du client en continu, de sorte que la programmation côté serveur est généralement une boucle morte et s'exécute sans fin. * / while (true) {socket s = s.accept (); / * Appelez la méthode Accept () côté serveur pour accepter l'objet de connexion du client. La méthode Accept () est une méthode de blocage. J'attends bêtement de si un client demande la connexion. Ensuite, la prise à douille côté serveur établit une connexion avec la prise de douille sur le client. * / / * Si le client peut se connecter au côté serveur dépend de la question de savoir si le côté serveur accepte la demande de connexion du client. Si le client accepte la demande de connexion, installez une prise de socket côté serveur pour établir une connexion avec le client via cette prise et communiquez entre elles. * / System.out.println ("Un client connecté!"); / * Utilisez le flux InputStream pour recevoir les informations envoyées du client et utilisez le flux de données DataRainPutStream pour traiter les informations reçues * / DatAnputStream dis = new DataRainputStream (s.getInputStream ()); / * Utilisez readUtf (la méthode lit toutes les informations reçues et les stocke dans la variable str pour lire la méthode readUtf () est également une méthode de blocage. Il attendra bêtement que le client envoie des informations, puis lit les informations reçues. Si le client n'écrira pas quelque chose ne sera pas efficace. Le programme côté serveur est bloqué, de sorte que le client ne peut pas se connecter, car un autre client souhaite se connecter au serveur, il doit appeler la méthode Accept () du côté du serveur. ne pas lire les informations. Prise
Importer java.net. *; Importer java.io. *; public class TestClientSocket {public static void main (String args []) lève une exception {socket s = new socket ("127.0.0.1", 6666); / * Le client s'applique pour se connecter au côté serveur * / / * Après avoir connecté le côté serveur, vous pouvez publier des informations au côté du serveur et recevoir des informations renvoyées du côté serveur, et recevoir des informations de sortie des informations et recevoir des informations de retour. Le principe d'entrée et de sortie du flux doit être utilisé pour traiter les informations * / / * voici les informations de sortie de sortie de sortie de sortie de sortie vers le côté serveur * / outputStream os = s.getOutputStream (); DataOutputStream dos = new DataOutputStream (OS); Thread.sleep (30000); / * Le client dort 30 secondes avant d'envoyer des informations au serveur * / dos.writeUtf ("Hello Server!"); }}Le client demande une connexion au serveur via le port 6666. Une fois que le serveur a accepté la demande de connexion du client, il installe une prise sur le serveur, puis connecte cette prise avec la prise du client, afin que le serveur puisse communiquer avec le client. Lorsqu'un autre client demande une connexion, une fois que le serveur l'a accepté, une autre prise sera installée pour se connecter à la prise du client.