Java ist eine High-Level-Programmiersprache, die im Mai 1995 von Sun Microsystems eingeführt wurde. Java kann auf mehreren Plattformen ausgeführt werden, z. B. Windows, Mac OS und anderen UNIX-Versionen von Systemen. Als Vertreter der statischen objektorientierten Programmiersprachen implementiert die Java-Sprache die objektorientierte Theorie perfekt und ermöglicht es Programmierern, komplexe Programmierungen mit einer eleganten Denkweise durchzuführen. „Geek Academy Java Video Tutorial“ führt Sie in die Welt der Java-Sprache ein, von oberflächlich bis tief, von einfach bis fortgeschritten.
Adresse für die Kurswiedergabe: http://www.php.cn/course/275.html
Der Unterrichtsstil des Lehrers:
Die Vorträge des Lehrers sind einfach und ausführlich, klar in der Struktur, werden Schicht für Schicht analysiert, ineinandergreifend, streng in der Argumentation, streng in der Struktur und im Gebrauch Die logische Kraft des Denkens, um die Aufmerksamkeit der Schüler zu erregen. Nutzen Sie die Vernunft, um den Unterrichtsprozess im Klassenzimmer zu steuern. Durch das Zuhören der Vorlesungen des Lehrers lernen die Schüler nicht nur Wissen, sondern erhalten auch eine Denkschulung und werden auch von der strengen akademischen Haltung des Lehrers beeinflusst und beeinflusst
Der schwierigere Punkt in diesem Video ist die Socket-Kommunikation in Java:
1. Zwei Hauptprobleme bei der Netzwerkprogrammierung
Eines ist die genaue Lokalisierung eines oder mehrerer Computer auf dem Netzwerk Die andere besteht darin, Daten zuverlässig und effizient zu übertragen, nachdem der Host gefunden wurde.
Im TCP/IP-Protokoll ist die IP-Schicht hauptsächlich für die Positionierung von Netzwerk-Hosts und das Routing der Datenübertragung verantwortlich. Die IP-Adresse kann einen Host im Internet eindeutig identifizieren.
Die TCP-Schicht bietet anwendungsorientierte zuverlässige (TCP) oder unzuverlässige (UDP) Datenübertragungsmechanismen. Dies ist das Hauptziel der Netzwerkprogrammierung. Im Allgemeinen müssen Sie sich nicht darum kümmern, wie die IP-Schicht Daten verarbeitet .
Das derzeit beliebteste Netzwerkprogrammiermodell ist die Client/Server (C/S)-Struktur. Das heißt, einer der Kommunikationspartner fungiert als Server und wartet darauf, dass der Client eine Anfrage stellt und antwortet. Kunden wenden sich an den Server, wenn sie Dienste benötigen. Der Server wird im Allgemeinen immer als Daemon-Prozess ausgeführt und überwacht den Netzwerk-Port. Sobald eine Kundenanfrage vorliegt, startet er einen Service-Prozess, um auf den Kunden zu antworten, und überwacht gleichzeitig den Service-Port weiterhin Kunden können auch zeitnahe Dienstleistungen erhalten.
Zweitens zwei Arten von Übertragungsprotokollen: TCP; UDP
TCP ist die Abkürzung für Transfer Control Protocol, ein verbindungsorientiertes Protokoll, das eine zuverlässige Übertragung gewährleistet. Durch die Übertragung über das TCP-Protokoll wird ein sequentieller, fehlerfreier Datenstrom erhalten. Um auf Basis des TCP-Protokolls zu kommunizieren, muss eine Verbindung zwischen den beiden Sockets des Senders und des Empfängers hergestellt werden. Wenn ein Socket (normalerweise ein Server-Socket) auf den Verbindungsaufbau wartet, kann der andere Socket eine Verbindung anfordern Sobald diese beiden Sockets verbunden sind, können sie eine bidirektionale Datenübertragung durchführen und beide Parteien können Sende- oder Empfangsvorgänge durchführen.
UDP ist die Abkürzung für User Datagram Protocol. Es handelt sich um ein verbindungsloses Protokoll, das eine vollständige Quelladresse oder Zieladresse enthält. Der Pfad wird an das Ziel übermittelt. Ob das Ziel erreicht werden kann, die Zeit bis zum Erreichen des Ziels und die Richtigkeit des Inhalts können daher nicht garantiert werden.
Vergleiche:
UDP: 1, in jedem Datagramm werden vollständige Adressinformationen angegeben, sodass keine Verbindung zwischen Sender und Empfänger hergestellt werden muss.
2. Es gibt eine Größenbeschränkung, wenn UDP Daten überträgt. Jedes übertragene Datagramm muss auf 64 KB begrenzt sein.
3. UDP ist ein unzuverlässiges Protokoll. Vom Sender gesendete Datagramme kommen nicht unbedingt in der gleichen Reihenfolge beim Empfänger an.
TCP: 1. Verbindungsorientiertes Protokoll, in Socket A muss eine Verbindung hergestellt werden müssen vor der Datenübertragung untereinander hergestellt werden, daher ist in TCP eine
-Verbindungszeit erforderlich.
2. TCP-Übertragungsdatengrößenbeschränkung Sobald die Verbindung hergestellt ist, können die Sockets beider Parteien große
Daten in einem einheitlichen Format übertragen.
3. TCP ist ein zuverlässiges Protokoll, das sicherstellt, dass der Empfänger alle vom Sender gesendeten Daten vollständig und korrekt erhält.
Anwendung:
1. TCP hat eine starke Bedeutung in der Netzwerkkommunikation. Beispielsweise erfordern Remote-Verbindungen (Telnet) und Dateiübertragungen (FTP), dass Daten variabler Länge zuverlässig übertragen werden. Eine zuverlässige Übertragung hat jedoch ihren Preis. Die Überprüfung der Richtigkeit des Dateninhalts beansprucht zwangsläufig Rechenzeit und Netzwerkbandbreite. Daher ist die TCP-Übertragung nicht so effizient wie UDP.
2. UDP ist einfach zu bedienen und erfordert weniger Überwachung, daher wird es normalerweise für Client/Server-Anwendungen in verteilten Systemen mit hoher Zuverlässigkeit in lokalen Netzwerken verwendet. Beispielsweise erfordert das Videokonferenzsystem keine absolute Korrektheit der Audio- und Videodaten, solange die Kontinuität gewährleistet ist. In diesem Fall ist es offensichtlich sinnvoller, UDP zu verwenden.
3. Java-Netzwerkprogrammierung basierend auf Socket
1. Was ist Socket
Zwei Programme im Netzwerk realisieren den Datenaustausch über eine bidirektionale Kommunikationsverbindung bidirektional Ein Ende der Verbindung wird als Socket bezeichnet. Socket wird normalerweise verwendet, um die Verbindung zwischen dem Client und dem Server zu realisieren. Socket ist eine sehr beliebte Programmierschnittstelle für das TCP/IP-Protokoll. Ein Socket wird eindeutig durch eine IP-Adresse und eine Portnummer bestimmt.
Die von Socket unterstützten Protokolltypen sind jedoch nicht nur TCP/IP, sodass keine notwendige Verbindung zwischen beiden besteht. In der Java-Umgebung bezieht sich die Socket-Programmierung hauptsächlich auf die Netzwerkprogrammierung, die auf dem TCP/IP-Protokoll basiert.
2. Der Prozess der Socket-Kommunikation
Die Serverseite lauscht, um zu sehen, ob eine Verbindungsanfrage an einem bestimmten Port vorliegt. Die Clientseite sendet eine Verbindungsanfrage an die Serverseite Die Serverseite sendet eine Verbindungsanforderung an die Clientseite. Eine Verbindung wird hergestellt. Sowohl die Serverseite als auch die Clientseite können über Senden, Schreiben und andere Methoden miteinander kommunizieren.
Für einen voll funktionsfähigen Socket muss er die folgende Grundstruktur enthalten und sein Arbeitsprozess umfasst die folgenden vier grundlegenden Schritte:
(1) Socket erstellen; 2) Öffnen Sie den mit dem Socket verbundenen Eingabe-/Ausgabestream. (3) Führen Sie Lese-/Schreibvorgänge auf dem Socket gemäß einem bestimmten Protokoll durch. (4) Schließen Sie den Socket. In praktischen Anwendungen wird der angezeigte Abschluss nicht verwendet, obwohl dies in vielen Artikeln empfohlen wird. In meinem Programm hat dies jedoch möglicherweise keine Auswirkungen, da das Programm selbst relativ einfach ist und die Anforderungen nicht hoch sind)
3, Socket erstellen
Socket erstellen
Java stellt im Paket java.NET zwei Klassen zur Verfügung, Socket und ServerSocket, die zur Darstellung des Clients bzw. Servers bidirektionaler Verbindungen verwendet werden. Dies sind zwei sehr gut gekapselte Klassen und sehr bequem zu verwenden. Seine Konstruktionsmethode ist wie folgt:
Wobei Adresse, Host und Port die IP-Adresse, der Hostname und die Portnummer der anderen Partei in der bidirektionalen Verbindung sind, gibt Stream an, ob der Socket vorhanden ist ein Stream-Socket oder ein Datagramm-Socket, und localPort gibt die lokale Portnummer des Hosts an, localAddr und bindAddr sind die Adresse des lokalen Computers (die Hostadresse von ServerSocket) und impl ist die übergeordnete Klasse des Sockets, die verwendet werden kann um sowohl serverSocket als auch Socket zu erstellen. count stellt die maximale Anzahl von Verbindungen dar, die der Server unterstützen kann. Zum Beispiel: Learning Video Network http://www.php.cnBeachten Sie, dass Sie bei der Auswahl des Ports vorsichtig sein müssen. Jeder Port stellt einen bestimmten Dienst bereit. Nur durch Angabe des richtigen Ports können Sie den entsprechenden Dienst erhalten. Portnummern von 0 bis 1023 sind vom System reserviert. Beispielsweise ist die Portnummer für den HTTP-Dienst 80, die Portnummer für den Telnet-Dienst 21 und die Portnummer für den FTP-Dienst 23. Daher wählen wir einen Port Um Konflikte zu vermeiden, wählen Sie am besten eine Portnummer größer als 1023.
Socket(InetAddress address, int port); Socket(InetAddress address, int port, boolean stream); Socket(String host, int prot); Socket(String host, int prot, boolean stream); Socket(SocketImpl impl) Socket(String host, int port, InetAddress localAddr, int localPort) Socket(InetAddress address, int port, InetAddress localAddr, int localPort) ServerSocket(int port); ServerSocket(int port, int backlog); ServerSocket(int port, int backlog, InetAddress bindAddr)
Socket client = new Socket("127.0.01.", 80); ServerSocket server = new ServerSocket(80);
1. Client-Programm
2. Server-Programm5, Client/Server Programm, das mehrere Clients unterstützt
import java.io.*; import java.net.*; public class TalkClient { public static void main(String args[]) { try{ Socket socket=new Socket("127.0.0.1",4700); //向本机的4700端口发出客户请求 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //由系统标准输入设备构造BufferedReader对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); //由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输入流,并构造相应的BufferedReader对象 String readline; readline=sin.readLine(); //从系统标准输入读入一字符串 while(!readline.equals("bye")){ //若从标准输入读入的字符串为 "bye"则停止循环 os.println(readline); //将从系统标准输入读入的字符串输出到Server os.flush(); //刷新输出流,使Server马上收到该字符串 System.out.println("Client:"+readline); //在系统标准输出上打印读入的字符串 System.out.println("Server:"+is.readLine()); //从Server读入一字符串,并打印到标准输出上 readline=sin.readLine(); //从系统标准输入读入一字符串 } //继续循环 os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket }catch(Exception e) { System.out.println("Error"+e); //出错,则打印出错信息 } } }
Das obige ist der detaillierte Inhalt vonRessourcenfreigabe für Java-Video-Tutorials der Geek Academy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!