Inhaltsverzeichnis
Ein Überblick" >Ein Überblick
1. Netzwerkmodell" > 1. Netzwerkmodell
2. IP-Protokoll " > 2. IP-Protokoll
3. TCP-Protokoll " > 3. TCP-Protokoll
4. UDP-Protokoll " > 4. UDP-Protokoll
5. HTTP-Protokoll " > 5. HTTP-Protokoll
6. Port-Port " > 6. Port-Port
7. Socket Socket " > 7. Socket Socket
2 TCP-Programmierung " >2 TCP-Programmierung
5.Demo" >5.Demo
Kunde" >Kunde
Server" >Server
Drei UDP-Programmierung" >Drei UDP-Programmierung
1. Datenverarbeitungsmethode" > 1. Datenverarbeitungsmethode
2. Allgemeine Schritte zum Senden von Daten: " > 2. Allgemeine Schritte zum Senden von Daten:
3. Allgemeine Schritte zum Empfangen von Daten: " > 3. Allgemeine Schritte zum Empfangen von Daten:
Heim Java javaLernprogramm Ausführliche Erläuterung von Beispielen zur Netzwerkkommunikation

Ausführliche Erläuterung von Beispielen zur Netzwerkkommunikation

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

Ein Überblick

1. Netzwerkmodell

OSI( Das Open System Interconnection-Modell (Open System Interconnection) ist eine Zusammenfassung der Netzwerksystemstruktur. Das Netzwerk ist in sieben Schichten unterteilt: Anwendungsschicht, Präsentationsschicht, Sitzungsschicht, Transportschicht, Netzwerkschicht und Daten Link. Schicht, physikalische Schicht.

2. IP-Protokoll

Das Netzwerkschichtprotokoll legt die Regeln zum Identifizieren und Finden von Computern im Internet fest.

3. TCP-Protokoll

Ein Datenübertragungsprotokoll auf der Transportschicht. Die Verbindung wird zuvor durch einen „Drei-Wege-Handshake“ hergestellt Die Datenübertragung und das anschließende Senden von Daten eignen sich für Situationen, die eine hohe Datengenauigkeit erfordern. Da vor der Datenübertragung eine Verbindung hergestellt werden muss, ist die Übertragungsgeschwindigkeit langsam.

4. UDP-Protokoll

Ein Datenübertragungsprotokoll auf der Transportschicht. Es ist nicht erforderlich, vor der Datenübertragung eine Verbindung herzustellen eignet sich für eine genaue Datenverarbeitung. Wenn die sexuellen Anforderungen nicht hoch sind, erfolgt die Datenübertragung im Allgemeinen schneller. Chat-Informationen werden über dieses Protokoll übertragen.

5. HTTP-Protokoll

Das HTTP-Protokoll ist ein Protokoll der Anwendungsschicht, das eine Schnittstelle für Betriebssysteme oder Netzwerkanwendungen für den Zugriff auf Netzwerkdienste bereitstellt .

6. Port-Port

Wenn die Daten den Computer erreichen, wird jedem ein ganzzahliger Wert zugewiesen, um die Zielanwendung zu finden Anwendung. Mit einem Wert von 0-65535 ist dieser ganzzahlige Wert der Port . Es ist ersichtlich, dass der Port ein Anwendungsprogramm auf dem Computer darstellt und sicherstellt, dass die Daten das vorgegebene Programm genau erreichen. Ein Port kann nicht von mehreren Anwendungen gleichzeitig belegt werden. Nach dem Ende einer Anwendung wird der Port nicht sofort freigegeben. Es gibt eine Speicherverzögerungszeit, die im Allgemeinen sehr kurz ist. Ports 0-1023 sind bereits von Systemanwendungen und anderen Anwendungen belegt. Vermeiden Sie die Verwendung von Ports in diesem Bereich während des Programmdesigns.

7. Socket Socket

Socket ist ein Tool zum Senden und Empfangen von Daten. Der Absender sendet Daten über den Socket, und der Empfänger lauscht über den Socket auf den angegebenen Port, um Daten zu erhalten.

8. Unabhängig davon, ob das TCP-Protokoll oder das UDP-Protokoll verwendet wird, können Daten nur in Byteform gesendet werden.

2 TCP-Programmierung

1. Durch das Schließen des über den Socket erhaltenen Eingabe- oder Ausgabestreams wird der Socket geschlossen.

2. Der über den Socket erhaltene Ausgabestream muss nach Abschluss der Ausgabe geschlossen werden, andernfalls wird der entsprechende Eingabestream am anderen Ende blockiert. Da beim Schließen des Ausgabestreams über das Ausgabestream-Objekt gleichzeitig das Socket-Objekt schließt, kann das andere Ende das dem Socket entsprechende Objekt nicht abrufen. Daher ist das Der Ausgabestream kann nur über die Methode „shutdownOutput“ unter dem Socket geschlossen werden.

3. Allgemeine Schritte für den 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,同时关闭输入与输出流
Nach dem Login kopieren

4. Allgemeine Schritte für den Server:

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();
Nach dem Login kopieren

5.Demo

Kunde

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();
    }

}
Nach dem Login kopieren

Server

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();
    }

}
Nach dem Login kopieren

Drei UDP-Programmierung

1. Datenverarbeitungsmethode

Das UDP-Protokoll sendet Daten in Form von Paketen mit einem Maximalwert von 64.000 pro Paket.

2. Allgemeine Schritte zum Senden von Daten:

DatagramSocket socket=new DatagramSocket();//创建数据报套接字用于发送数据//DUP协议采用数据包分段发送数据,因此需要建立数据包,在数据包中指明目的地IP与端口DatagramPacket packet= DatagramPacket(byte buf[], int offset, int length,InetAddress address, int port);
socket.send(packet);
Nach dem Login kopieren

3. Allgemeine Schritte zum Empfangen von Daten:

DatagramSocket socket=new DatagramSocket(int port);//创建监听指定端口的数据报套接字DatagramPacket packet=new DatagramPacket(byte buf[], int length);
socket.receive(packet);
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen zur Netzwerkkommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann die Netzwerkkommunikation in der C++-Big-Data-Entwicklung optimiert werden? Wie kann die Netzwerkkommunikation in der C++-Big-Data-Entwicklung optimiert werden? Aug 27, 2023 am 11:54 AM

Wie kann die Netzwerkkommunikation bei der C++-Big-Data-Entwicklung optimiert werden? Einführung: Im heutigen Big-Data-Zeitalter spielt die Netzwerkkommunikation eine entscheidende Rolle bei der Datenverarbeitung. Für Entwickler, die C++ für die Big-Data-Entwicklung verwenden, ist die Optimierung der Leistung der Netzwerkkommunikation der Schlüssel zur Verbesserung der Datenverarbeitungseffizienz. In diesem Artikel werden einige Methoden zur Optimierung der Netzwerkkommunikation in der C++-Big-Data-Entwicklung anhand von Codebeispielen vorgestellt. 1. Verwenden Sie eine leistungsstarke Netzwerkbibliothek. Bei der C++-Big-Data-Entwicklung ist die Auswahl einer leistungsstarken Netzwerkbibliothek der erste Schritt zur Optimierung der Netzwerkkommunikationsleistung. Diese Bibliotheken sind normalerweise

So erreichen Sie eine Netzwerkzeitsynchronisationskommunikation über das PHP- und NTP-Protokoll So erreichen Sie eine Netzwerkzeitsynchronisationskommunikation über das PHP- und NTP-Protokoll Jul 28, 2023 pm 10:09 PM

Überblick darüber, wie eine Netzwerkzeitsynchronisierungskommunikation über PHP- und NTP-Protokolle erreicht wird: Network Time Protocol (kurz NTP) ist ein Protokoll, das zur Synchronisierung der Computersystemzeit verwendet wird. Bei Netzwerkanwendungen ist eine genaue Zeitsynchronisierung sehr wichtig, um den normalen Betrieb von Netzwerkdiensten sicherzustellen. In PHP kann die Netzwerkzeitsynchronisierung durch die Kommunikation mit dem NTP-Protokoll erreicht werden. In diesem Artikel wird erläutert, wie Sie PHP-Code für die Kommunikation mit einem NTP-Server verwenden, um eine genaue Netzwerkzeit zu erhalten. Schritt

So beheben Sie: Java-Netzwerkkommunikationsfehler: Zeitüberschreitung bei der Verbindung So beheben Sie: Java-Netzwerkkommunikationsfehler: Zeitüberschreitung bei der Verbindung Aug 27, 2023 am 10:30 AM

So lösen Sie: Java-Netzwerkkommunikationsfehler: Verbindungszeitüberschreitung Bei der Kommunikation mit dem Java-Netzwerk tritt häufig ein Verbindungszeitüberschreitungsfehler auf. Verbindungszeitlimit bedeutet, dass beim Aufbau einer Netzwerkverbindung der Handshake-Vorgang zwischen Client und Server länger dauert als das voreingestellte Zeitlimit. Bei der Netzwerkkommunikation können Verbindungs-Timeout-Fehler durch mehrere Faktoren verursacht werden, wie z. B. Netzwerkverzögerung, langsame Serverantwort usw. In diesem Artikel wird beschrieben, wie Verbindungs-Timeout-Fehler bei der Java-Netzwerkkommunikation behoben werden, und es wird ein Beispielcode bereitgestellt. Überprüfen Sie zunächst die Netzwerkverbindung

Nutzen Sie Swoole-Entwicklungsfunktionen, um eine hohe gleichzeitige Netzwerkkommunikation zu erreichen Nutzen Sie Swoole-Entwicklungsfunktionen, um eine hohe gleichzeitige Netzwerkkommunikation zu erreichen Aug 08, 2023 pm 01:57 PM

Nutzen Sie Swoole-Entwicklungsfunktionen, um eine Netzwerkkommunikation mit hoher Parallelität zu erreichen. Zusammenfassung: Swoole ist ein leistungsstarkes Netzwerkkommunikations-Framework, das auf der PHP-Sprache basiert. Es verfügt über Funktionen wie Coroutinen, asynchrone E/A und Multiprozesse und eignet sich für die Entwicklung von Hochgeschwindigkeitsnetzwerken. Parallelität von Netzwerkanwendungen. In diesem Artikel wird die Verwendung von Swoole zur Entwicklung von Netzwerkkommunikationsfunktionen mit hoher Parallelität vorgestellt und einige Codebeispiele gegeben. Einleitung Mit der rasanten Entwicklung des Internets werden die Anforderungen an die Netzwerkkommunikation immer höher, insbesondere in Szenarien mit hoher Parallelität. Bei der herkömmlichen PHP-Entwicklung sind die Fähigkeiten zur gleichzeitigen Verarbeitung schwach

Umgang mit Netzwerkkommunikationsproblemen in C# Umgang mit Netzwerkkommunikationsproblemen in C# Oct 09, 2023 am 09:37 AM

Für den Umgang mit Netzwerkkommunikationsproblemen in C# sind spezifische Codebeispiele erforderlich. Netzwerkkommunikation ist eine sehr wichtige Technologie in der modernen Programmierung. Unabhängig davon, ob wir Netzwerkanwendungen, Online-Spiele oder Remote-Dateninteraktionen entwickeln, müssen wir alle verstehen, wie wir mit Netzwerkkommunikationsproblemen in C# umgehen. In diesem Artikel werden einige gängige Methoden zur Handhabung der Netzwerkkommunikation in C# vorgestellt und entsprechende Codebeispiele bereitgestellt. TCP/IP Sockets TCP/IP Sockets ist ein zuverlässiges, verbindungsorientiertes Netzwerkkommunikationsprotokoll. In C# können wir System verwenden.

Subnetzmaske: Rolle und Einfluss auf die Effizienz der Netzwerkkommunikation Subnetzmaske: Rolle und Einfluss auf die Effizienz der Netzwerkkommunikation Dec 26, 2023 pm 04:28 PM

Die Rolle der Subnetzmaske und ihr Einfluss auf die Effizienz der Netzwerkkommunikation. Einführung: Mit der Popularität des Internets ist die Netzwerkkommunikation zu einem unverzichtbaren Bestandteil der modernen Gesellschaft geworden. Gleichzeitig ist auch die Effizienz der Netzwerkkommunikation zu einem Schwerpunkt der Aufmerksamkeit der Menschen geworden. Beim Aufbau und der Verwaltung eines Netzwerks ist die Subnetzmaske eine wichtige und grundlegende Konfigurationsoption, die eine Schlüsselrolle bei der Netzwerkkommunikation spielt. In diesem Artikel werden die Rolle der Subnetzmaske und ihre Auswirkungen auf die Effizienz der Netzwerkkommunikation vorgestellt. 1. Definition und Funktion der Subnetzmaske Subnetzmaske (Subnetzmaske)

So beheben Sie: Java-Netzwerkkommunikationsfehler: URL konnte nicht analysiert werden So beheben Sie: Java-Netzwerkkommunikationsfehler: URL konnte nicht analysiert werden Aug 19, 2023 am 11:49 AM

So lösen Sie: Java-Netzwerkkommunikationsfehler: URL konnte nicht analysiert werden. Bei der Kommunikation über Java-Netzwerke treten häufig Fehler auf, die dazu führen, dass die URL nicht analysiert werden kann. Dieser Fehler tritt normalerweise beim Parsen der URL auf und das gültige URL-Format kann nicht korrekt analysiert werden. Bevor wir dieses Problem lösen können, müssen wir einige grundlegende URL-Konzepte und verwandte Toolklassen verstehen, die von Java bereitgestellt werden. URL ist die Abkürzung für Uniform Resource Locator und dient zur Identifizierung des Standorts von Ressourcen im Netzwerk. Eine URL besteht normalerweise aus Protokoll, Hostname, Portnummer, Pfad und Abfrage

So verwenden Sie Coroutinen, um eine effiziente Netzwerkkommunikation in der Go-Sprache zu erreichen So verwenden Sie Coroutinen, um eine effiziente Netzwerkkommunikation in der Go-Sprache zu erreichen Aug 06, 2023 pm 07:13 PM

So erreichen Sie mithilfe von Coroutinen eine effiziente Netzwerkkommunikation in der GO-Sprache. Einführung: Mit der rasanten Entwicklung des Internets ist die Netzwerkkommunikation immer wichtiger geworden. In der modernen Entwicklung verfügt die Go-Sprache als gleichzeitige Programmiersprache über leistungsstarke Coroutine-Funktionen, die die Netzwerkkommunikation effizienter machen. Ziel dieses Artikels ist es, die Verwendung von Coroutinen vorzustellen, um eine effiziente Netzwerkkommunikation in der Go-Sprache zu erreichen, einschließlich allgemeiner Server- und Client-Programmierung. 1. Grundlegende Konzepte Bevor wir diskutieren, wie man Coroutinen verwendet, um eine effiziente Netzwerkkommunikation zu erreichen, müssen wir zunächst einige grundlegende Konzepte verstehen, einschließlich der folgenden

See all articles