1. Zwei Hauptprobleme bei der Netzwerkprogrammierung
Einer ist, wie man einen oder mehrere Hosts im Netzwerk genau lokalisiert, und der andere ist, wie nach dem Auffinden des Hosts Daten zuverlässig und effizient übertragen werden können.
Im TCP/IP -Protokoll ist die IP -Schicht hauptsächlich für den Standort des Netzwerkhosts und das Routing der Datenübertragung verantwortlich. Die IP -Adresse kann einen Host im Internet eindeutig bestimmen.
Die TCP-Schicht bietet einen zuverlässigen (TCP) oder nicht zuverlässigen Datenübertragungsmechanismus (UDP) für die Anwendung, das das Hauptziel der Netzwerkprogrammierung darstellt, und muss sich im Allgemeinen nicht darum kümmern, wie die IP-Schicht Daten verarbeitet.
Das beliebteste Netzwerkprogrammiermodell ist derzeit die Client/Server -Struktur (C/S). Das heißt, eine der Kommunikationsparteien fungiert als Server, um darauf zu warten, dass der Kunde eine Anfrage einreicht und antwortet. Der Kunde gilt für den Server, wenn der Dienst benötigt wird. Der Server läuft im Allgemeinen immer als Daemon und hört den Netzwerkport an. Sobald ein Kunde dies anfordert, startet er einen Serviceprozess, um auf den Kunden zu reagieren und gleichzeitig den Service -Port selbst zu hören, damit spätere Kunden auch rechtzeitig Service erhalten können.
2. Zwei Arten von Übertragungsprotokollen: TCP/UDP
TCP ist die Abkürzung des Transferregelungsprotokolls, eines verbindungsorientierten Protokolls, das eine zuverlässige Übertragung gewährleistet. Die Übertragung über das TCP-Protokoll führt zu einer Reihenfolge fehlerfreier Datenströme. Es muss eine Verbindung zwischen den beiden Steckdosenpaaren des Absenders und dem Empfänger hergestellt werden, um auf der Grundlage des TCP -Protokolls zu kommunizieren. Wenn ein Socket (normalerweise ein Server -Socket) darauf wartet, eine Verbindung herzustellen, kann die andere Steckdose eine Verbindung erfordern. Sobald diese beiden Steckdosen verbunden sind, können sie eine Zwei-Wege-Datenübertragung durchführen, und beide Parteien können Sende- oder Empfangsvorgänge durchführen.
UDP ist die Abkürzung des User Datagram -Protokolls. Es ist ein verbindungsloses Protokoll. Jedes Datagramm ist eine unabhängige Information, einschließlich einer vollständigen Quell- oder Zieladresse. Es wird durch einen möglichen Pfad an das Ziel im Netzwerk übertragen. Unabhängig davon, ob es das Ziel erreichen kann, die Zeit für das Ziel des Ziels und die Richtigkeit des Inhalts nicht garantiert werden kann.
Vergleichen:
UDP:
1. Jedes Datagramm enthält vollständige Adressinformationen, sodass keine Verbindung zwischen dem Absender und dem Empfänger hergestellt werden muss.
2. Es gibt eine Größengrenze, wenn DP Daten überträgt, und jedes übertragene Datagramm muss auf 64 KB begrenzt sein.
3. DP ist ein unzuverlässiges Protokoll, und die vom Absender gesendeten Datagramme kommen nicht unbedingt in derselben Reihenfolge zum Empfänger.
TCP:
1. Um eine Verbindung zum Verbindungsprotokoll herzustellen, muss vor der Datenübertragung zwischen Sockets eine Verbindung hergestellt werden, sodass in TCP die Verbindungszeit erforderlich ist.
2. Größenbegrenzung für CP -Übertragungsdaten. Sobald die Verbindung hergestellt ist, können die Steckdosen beider Parteien große Daten in einem einheitlichen Format übertragen.
3.CP ist ein zuverlässiges Protokoll, das sicherstellt, dass der Empfänger alle vom Absender gesendeten Daten vollständig korrekt erhält.
Anwendung:
1. TCP hat eine äußerst starke Vitalität in der Netzwerkkommunikation. Beispielsweise erfordern die Remoteverbindung (Telnet) und die Dateiübertragung (FTP) Daten mit unterschiedlichen Längen zuverlässig übertragen. Zuverlässige Übertragung ist jedoch mit Kosten verbunden. Die Überprüfung der Richtigkeit des Dateninhalts wird zwangsläufig die Verarbeitungszeit und die Netzwerkbandbreite des Computers einnehmen. Daher ist die Effizienz der TCP -Übertragung nicht so hoch wie die von UDP.
2. UDP ist einfach zu bedienen und erfordert nur weniger Überwachung. Daher wird sie normalerweise in Client/Server -Anwendungen in verteilten Systemen mit hoher Zuverlässigkeit in LANs verwendet. Beispielsweise erfordern Videokonferenzsysteme nicht die absolute Korrektheit von Audio- und Videodaten, solange die Konsistenz garantiert ist, ist es offensichtlich vernünftiger, UDP in diesem Fall zu verwenden.
3. Socket-basierte Java-Netzwerkprogrammierung
1. Ist es eine Steckdose
Zwei Programme im Netzwerk realisieren den Datenaustausch über eine wechselseitige Kommunikationsverbindung. Ein Ende dieses Zwei-Wege-Links wird als Sockel bezeichnet. Socket wird normalerweise verwendet, um sich zwischen Kunden und Dienstleistungsanbietern zu verbinden. Socket ist eine sehr beliebte Programmierschnittstelle des TCP/IP -Protokolls. Eine Steckdose wird durch eine IP -Adresse und eine Portnummer eindeutig bestimmt.
Die von Socket unterstützten Protokolle sind jedoch nicht nur TCP/IP, sodass zwischen den beiden keine erforderliche Verbindung besteht. In der Java -Umgebung bezieht sich die Socket -Programmierung hauptsächlich auf Netzwerkprogramme basierend auf dem TCP/IP -Protokoll.
2. Der Prozess der Ock -Kommunikation
Das Server -Seite listen (hört), ob eine Verbindungsanforderung in einem bestimmten Port vorhanden ist. Die Client -Seite stellt eine Connect -Anforderung an die Serverseite aus, und die Serverseite sendet eine Akzeptanznachricht an die Client -Seite zurück. Eine Verbindung wird hergestellt. Sowohl die Server als auch die Client -Seite können durch Senden, Schreiben und andere Methoden miteinander kommunizieren.
Für einen voll funktionsfähigen Socket muss die folgende Grundstruktur enthalten sein, und der Arbeitsprozess umfasst die folgenden vier grundlegenden Schritte:
(1) Sockel erstellen;
(2) Öffnen Sie den mit der Sockel angeschlossenen Eingang/Abfluss;
(3) den Socket nach einem bestimmten Protokoll lesen/schreiben;
(4) Schließen Sie die Steckdose.
3. Bauen Sie Sockel
Sockel erstellen
Java bietet zwei Klassen in den Socket und ServerSocket im Paket java.net, die zur Darstellung des Clients und Servers für die bidirektionale Verbindung verwendet werden. Dies sind zwei sehr gut verpackte Klassen und sind sehr einfach zu bedienen. Die Konstruktionsmethode lautet wie folgt:
Socket (Inetaddress -Adresse, int Port);
Socket (Inetaddress -Adresse, int Port, Boolean Stream);
Socket (String Host, int Prot);
Socket (String -Host, int -Protokoll, Boolean Stream);
Socket (SocketImpl Impl)
Socket (String -Host, int Port, Inetaddress LocalAddr, int localport)
Socket (Inetaddress -Adresse, Int Port, InetadDress Localaddr, int localport)
ServerSocket (int Port);
ServerSocket (int Port, int Backlog);
ServerSocket (int Port, int Backlog, Inetaddress Bindaddr)
Die Adresse, Host und Port sind die IP -Adresse, die Hostname und die Portnummer der anderen Partei in der bidirektionalen Verbindung. Der Stream gibt an, ob es sich bei der Socket um einen Stream -Socket oder ein Datagramm -Sockel handelt. LocalPort gibt die Hafennummer des lokalen Hosts an. LocalAddr und Bindaddr sind die Adresse der lokalen Maschine (die Hostadresse des ServersSocket). Impl ist die übergeordnete Klasse der Steckdose. Es kann verwendet werden, um Serversocket zu erstellen und Steckdosen zu erstellen. Die Anzahl stellt die maximale Anzahl von Verbindungen dar, die der Server unterstützen kann. Zum Beispiel:
Socket Client = New Socket ("127.0.0.1", 8888);
ServerSocket Server = New ServerSocket (8888);
Beachten Sie, dass Sie bei der Auswahl eines Ports vorsichtig sein müssen. Jeder Port bietet einen bestimmten Service. Nur durch Angeben des richtigen Ports kann der entsprechende Dienst erhalten werden. Die Portnummern von 0 ~ 1023 sind vom System reserviert. Beispielsweise beträgt die Portnummer des HTTP -Dienstes 80, die Portnummer des Telnet -Dienstes 21 und die Portnummer des FTP -Dienstes 23. Wenn wir die Portnummer auswählen, wählen Sie daher am besten eine Nummer mehr als 1023, um Konflikte zu verhindern.
Wenn beim Erstellen einer Socket ein Fehler auftritt, wird eine IOException generiert und muss im Programm verarbeitet werden. Wenn Sie also einen Sockel oder eine Serversocket erstellen, müssen Sie eine Ausnahme fangen oder auswerfen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.