Table des matières
Un aperçu" >Un aperçu
1. Modèle de réseau" > 1. Modèle de réseau
2. Protocole IP " > 2. Protocole IP
3. Protocole TCP " > 3. Protocole TCP
4. Protocole UDP " > 4. Protocole UDP
5. Protocole HTTP " > 5. Protocole HTTP
6. Port port " > 6. Port port
7. Socket Socket " > 7. Socket Socket
2 Programmation TCP " >2 Programmation TCP
Maison Java javaDidacticiel Explication détaillée d'exemples de communication réseau

Explication détaillée d'exemples de communication réseau

Jun 25, 2017 am 09:33 AM
网络通信

Un aperçu

1. Modèle de réseau

OSI( Le modèle Open System Interconnection (Open System Interconnection) est un résumé de la structure du système réseau. Le réseau est divisé en sept couches : couche application, couche présentation, couche session, couche transport, couche réseau et données. couche lien, couche physique.

2. Protocole IP

Le protocole de couche réseau précise les règles d'identification et de recherche des ordinateurs sur Internet.

3. Protocole TCP

Un protocole de transmission de données au niveau de la couche transport La connexion est établie via une "prise de contact à trois" avant. transmission de données, puis L'envoi de données convient aux situations qui nécessitent une grande précision des données. Puisqu'une connexion doit être établie avant la transmission des données, la vitesse de transmission est lente.

4. Protocole UDP

Un protocole de transmission de données au niveau de la couche transport Il n'est pas nécessaire d'établir une connexion avant la transmission des données. est adapté à un traitement précis des données. Lorsque les exigences sexuelles ne sont pas élevées, la transmission des données est généralement les informations de discussion sont transmises via ce protocole.

5. Protocole HTTP

Le protocole HTTP est un protocole de couche application qui fournit une interface permettant au système d'exploitation ou aux applications réseau d'accéder au réseau services.

6. Port port

Lorsque les données parviennent à l'ordinateur, afin de retrouver l'application cible, une valeur entière est attribuée à chacune application. , avec une valeur de 0-65535, cette valeur entière est le port On peut voir que le port représente un programme d'application sur l'ordinateur, garantissant que les données atteignent avec précision le programme prédéterminé. Un port ne peut pas être occupé par plusieurs applications en même temps. Après la fin d'une application, le port ne sera pas libéré immédiatement. Il y a un temps d'occupation de la mémoire, qui est généralement très court. Les ports 0-1023 sont déjà occupés par des applications système et d'autres applications. Évitez d'utiliser des ports de cette plage lors de la conception du programme.

7. Socket Socket

Socket est un outil permettant d'envoyer et de recevoir des données. L'expéditeur envoie des données via le socket et le destinataire écoute le port spécifié via le socket pour obtenir des données.

8. Que le protocole TCP ou le protocole UDP soit utilisé, les données ne peuvent être envoyées que sous forme d'octets.

2 Programmation TCP

1. La fermeture du flux d'entrée ou du flux de sortie obtenu via le Socket fermera le Socket.

2. Le flux de sortie obtenu via le Socket doit être fermé une fois la sortie terminée, sinon le flux d'entrée correspondant à l'autre extrémité sera bloqué. Puisque lors de la fermeture du flux de sortie via l'objet du flux de sortie, ferme l'objet Socket en même temps, l'autre extrémité ne pourra pas obtenir l'objet correspondant au Socket. Par conséquent, le Le flux de sortie ne peut être fermé que via la méthode shutdownOutput sous Socket .

3. Étapes générales pour le client :

Socket socket=new Socket(String host,int port);//创建客户端Socket,发送与接收数据,需要指明服务器IP与端口OutputStream os=socket.getOutputStream();//获取输出流,向服务器发送数据..........
os.flush();
socket.shutdownOutput();//关闭输出流,防止服务器端阻塞InputStream is=socket.getInputStream();//获取输入流,输入流包含服务器的反馈信息............

socket.close();//关闭socket,同时关闭输入与输出流
Copier après la connexion

4. Étapes générales pour le serveur :

ServerSocket server=new ServerSocket(int port);//建立服务器端套接字,指定监听端口Socket socket=server.accept();//获取访问客户端的Socket,阻塞线程InputStream is=socket.getInputStream();//获取输入流,其中包含客户端发送的数据.............

OutputStream os=socket.getOutputStream();//获取输出流,向客户端反馈信息..............
os.flush();
os.shutdownOutput();

server.close();
Copier après la connexion

5.Démo

Client

package com.javase.networkCommunication.tcp.demo02;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class ImgClient {public static void main(String[] args) throws UnknownHostException, IOException {
        Socket socket = new Socket("192.168.146.1", 10007);
        FileInputStream is = new FileInputStream("Files/1.jpg");
        OutputStream os = socket.getOutputStream();byte[] buf = new byte[1024];// 先将数据读取到缓冲区,比频繁的从硬盘读取速度快int length = 0;while ((length = is.read(buf)) != -1) {
            os.write(buf, 0, length);
        }
        os.flush();
        socket.shutdownOutput();// 如果输出流不关闭,服务端对应的输入流会阻塞InputStream replyIs = socket.getInputStream();//不会阻塞线程byte[] buf01 = new byte[1024];int length01 = replyIs.read(buf01);
        String reply = new String(buf01, 0, length01);
        System.out.println(reply);
        
        is.close();
        socket.close();
    }

}
Copier après la connexion

Serveur

package com.javase.networkCommunication.tcp.demo02;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import org.junit.Test;public class ImgServer {

    @Testpublic void test01() throws IOException {
        ServerSocket serverSocket = new ServerSocket(10007);
        Socket socket = serverSocket.accept();// 线程阻塞,等待请求System.out.println("hostAddress=" + socket.getInetAddress().getHostAddress());
        InputStream is = socket.getInputStream();
        FileOutputStream os = new FileOutputStream("Files/2.jpg");
        System.out.println(1);byte[] buf = new byte[1024];int length = 0;
        System.out.println(2);int count = 3;while ((length = is.read(buf)) != -1) {
            os.write(buf, 0, length);
            System.out.println(count++);
        }
        os.flush();
        os.close();
        System.out.println("图片上传结束");/*PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        out.write("success");*/OutputStream out = socket.getOutputStream();
        out.write("success".getBytes());
        out.flush();
        socket.shutdownOutput();
        System.out.println("响应数据已发出");
        
        serverSocket.close();
    }

}
Copier après la connexion

Trois programmation UDP

1. Méthode de traitement des données

🎜>

Le protocole UDP envoie des données sous forme de paquets, avec une valeur maximale de 64k par paquet.

2. Étapes générales pour l'envoi de données :
DatagramSocket socket=new DatagramSocket();//创建数据报套接字用于发送数据//DUP协议采用数据包分段发送数据,因此需要建立数据包,在数据包中指明目的地IP与端口DatagramPacket packet= DatagramPacket(byte buf[], int offset, int length,InetAddress address, int port);
socket.send(packet);
Copier après la connexion

3. Étapes générales pour la réception de données :
DatagramSocket socket=new DatagramSocket(int port);//创建监听指定端口的数据报套接字DatagramPacket packet=new DatagramPacket(byte buf[], int length);
socket.receive(packet);
Copier après la connexion


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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment optimiser la communication réseau dans le développement Big Data C++ ? Comment optimiser la communication réseau dans le développement Big Data C++ ? Aug 27, 2023 am 11:54 AM

Comment optimiser la communication réseau dans le développement du Big Data C++ Introduction : À l'ère actuelle du Big Data, la communication réseau joue un rôle essentiel dans le traitement des données. Pour les développeurs qui utilisent C++ pour le développement de Big Data, l’optimisation des performances de communication réseau est la clé pour améliorer l’efficacité du traitement des données. Cet article présentera quelques méthodes pour optimiser la communication réseau dans le développement de Big Data C++, avec des exemples de code. 1. Utiliser une bibliothèque réseau hautes performances Dans le développement Big Data C++, le choix d'une bibliothèque réseau hautes performances est la première étape pour optimiser les performances de communication réseau. Ces bibliothèques sont généralement

Comment réaliser une communication de synchronisation de l'heure du réseau via les protocoles PHP et NTP Comment réaliser une communication de synchronisation de l'heure du réseau via les protocoles PHP et NTP Jul 28, 2023 pm 10:09 PM

Présentation de la manière de réaliser une communication de synchronisation de l'heure du réseau via les protocoles PHP et NTP : Network Time Protocol (NTP en abrégé) est un protocole utilisé pour synchroniser l'heure du système informatique. Dans les applications réseau, une synchronisation horaire précise est très importante pour garantir le fonctionnement normal des services réseau. En PHP, la synchronisation de l'heure du réseau peut être réalisée en communiquant avec le protocole NTP. Cet article explique comment utiliser le code PHP pour communiquer avec un serveur NTP afin d'obtenir une heure réseau précise. étape

Comment réparer : erreur de communication réseau Java : la connexion a expiré Comment réparer : erreur de communication réseau Java : la connexion a expiré Aug 27, 2023 am 10:30 AM

Comment résoudre : Erreur de communication réseau Java : délai d'expiration de la connexion Lors de la communication avec le réseau Java, vous rencontrez souvent une erreur de délai de connexion. Le délai d'expiration de la connexion signifie que lors de l'établissement d'une connexion réseau, le processus d'établissement de liaison entre le client et le serveur prend plus de temps que le délai prédéfini. Dans les communications réseau, les erreurs d'expiration de connexion peuvent être causées par plusieurs facteurs, tels qu'un retard du réseau, une réponse lente du serveur, etc. Cet article décrit comment résoudre les erreurs de délai de connexion dans les communications réseau Java et fournit un exemple de code. Vérifiez la connexion réseau. Nous devons d'abord

Utiliser les fonctions de développement Swoole pour obtenir une communication réseau simultanée élevée Utiliser les fonctions de développement Swoole pour obtenir une communication réseau simultanée élevée Aug 08, 2023 pm 01:57 PM

Utiliser les fonctions de développement de Swoole pour obtenir une communication réseau à haute concurrence Résumé : Swoole est un cadre de communication réseau hautes performances basé sur le langage PHP. Il possède des fonctionnalités telles que des coroutines, des E/S asynchrones et des processus multiples, et convient au développement de hautes performances. applications de réseau simultané. Cet article expliquera comment utiliser Swoole pour développer des fonctions de communication réseau à haute concurrence et donnera quelques exemples de code. Introduction Avec le développement rapide d'Internet, les exigences en matière de communication réseau sont de plus en plus élevées, en particulier dans les scénarios à forte concurrence. Le développement PHP traditionnel est confronté à de faibles capacités de traitement simultané

Comment gérer les problèmes de communication réseau en C# Comment gérer les problèmes de communication réseau en C# Oct 09, 2023 am 09:37 AM

Comment gérer les problèmes de communication réseau en C# nécessite des exemples de code spécifiques. La communication réseau est une technologie très importante dans la programmation moderne. Que nous développions des applications réseau, des jeux en ligne ou une interaction de données à distance, nous devons tous comprendre comment gérer les problèmes de communication réseau en C#. Cet article présentera quelques méthodes courantes de gestion de la communication réseau en C# et fournira des exemples de code correspondants. TCP/IP Sockets TCP/IP Sockets est un protocole de communication réseau fiable et orienté connexion. En C#, nous pouvons utiliser System.

Masque de sous-réseau : rôle et impact sur l'efficacité de la communication réseau Masque de sous-réseau : rôle et impact sur l'efficacité de la communication réseau Dec 26, 2023 pm 04:28 PM

Le rôle du masque de sous-réseau et son impact sur l'efficacité de la communication réseau Introduction : Avec la popularité d'Internet, la communication réseau est devenue un élément indispensable de la société moderne. Dans le même temps, l'efficacité de la communication en réseau est également devenue l'un des centres d'attention des gens. Dans le processus de création et de gestion d'un réseau, le masque de sous-réseau est une option de configuration importante et basique, qui joue un rôle clé dans la communication réseau. Cet article présentera le rôle du masque de sous-réseau et son impact sur l'efficacité des communications réseau. 1. Définition et fonction du masque de sous-réseau Masque de sous-réseau (subnetmask)

Comment réparer : erreur de communication réseau Java : échec de l'analyse de l'URL Comment réparer : erreur de communication réseau Java : échec de l'analyse de l'URL Aug 19, 2023 am 11:49 AM

Comment résoudre : Erreur de communication réseau Java : échec de l'analyse de l'URL Lorsque vous communiquez sur des réseaux Java, vous rencontrez souvent des erreurs qui ne parviennent pas à analyser l'URL. Cette erreur se produit généralement lors de l'analyse de l'URL et le format d'URL valide ne peut pas être correctement analysé. Avant de résoudre ce problème, nous devons comprendre certains concepts de base des URL et les classes d'outils associées fournies par Java. URL est l'abréviation de Uniform Resource Locator, qui est utilisée pour identifier l'emplacement des ressources sur le réseau. Une URL se compose généralement d'un protocole, d'un nom d'hôte, d'un numéro de port, d'un chemin et d'une requête.

Comment utiliser les coroutines pour obtenir une communication réseau efficace en langage Go Comment utiliser les coroutines pour obtenir une communication réseau efficace en langage Go Aug 06, 2023 pm 07:13 PM

Comment utiliser les coroutines pour obtenir une communication réseau efficace en langage GO Introduction : Avec le développement rapide d'Internet, la communication réseau est devenue de plus en plus importante. Dans le développement moderne, le langage Go est un langage de programmation concurrent et ses puissantes capacités de coroutine rendent la communication réseau plus efficace. Cet article vise à présenter comment utiliser les coroutines pour obtenir une communication réseau efficace en langage Go, y compris la programmation commune du serveur et du client. 1. Concepts de base Avant de discuter de la façon d'utiliser les coroutines pour obtenir une communication réseau efficace, nous devons d'abord comprendre certains concepts de base, notamment les suivants

See all articles