Was ist der Unterschied zwischen Socket-Programmierung und HTTP-Programmierung? kann mir bitte jemand helfen
Was ist der Unterschied zwischen Socket-Programmierung und HTTP-Programmierung? kann mir bitte jemand helfen
Antworten:
HTTP ist ein Anwendungsprotokoll. Dies bedeutet im Grunde, dass HTTP selbst nicht zum Transportieren von Informationen zu / von einem Remote-Endpunkt verwendet werden kann. Stattdessen basiert es auf einem zugrunde liegenden Protokoll, das im Fall von HTTP TCP ist.
Wenn Sie interessiert sind, können Sie mehr über OSI-Ebenen lesen .
Sockets hingegen sind eine API, die die meisten Betriebssysteme bereitstellen, um mit dem Netzwerk kommunizieren zu können. Die Socket-API unterstützt verschiedene Protokolle von der Transportschicht bis hinunter.
Das heißt, wenn Sie TCP verwenden möchten, verwenden Sie Sockets. Sie können aber auch Sockets verwenden, um über HTTP zu kommunizieren. Anschließend müssen Sie Nachrichten gemäß der HTTP-Spezifikation ( RFC2616 ) dekodieren / kodieren . Da dies für die meisten Entwickler eine große Aufgabe sein kann, haben wir auch Clients in unseren Entwickler-Frameworks (wie .NET) vorbereitet, zum Beispiel die WebClient
oder die HttpWebRequest
Klassen.
Bei HTTP verwenden Sie ein HTTP-Protokoll auf hoher Ebene (das über einem Socket funktioniert). Es ist sitzungslos, was bedeutet, dass Sie Textanfragen wie senden GET google.com
und im Gegenzug Text oder Binärdaten empfangen, nachdem diese Verbindung geschlossen wurde (in HTTP 1.1 sind dauerhafte Verbindungen verfügbar).
MSDN-Beispiel:
public static void Main (string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
Console.WriteLine ("Content length is {0}", response.ContentLength);
Console.WriteLine ("Content type is {0}", response.ContentType);
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream ();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
Console.WriteLine ("Response stream received.");
Console.WriteLine (readStream.ReadToEnd ());
response.Close ();
readStream.Close ();
}
Mit Sockets gehen Sie auf die niedrigere Ebene und steuern tatsächlich die Verbindung und senden / empfangen Rohbytes.
Beispiel:
var remoteEndpoint=new IPEndPoint(IPAddress.Loopback, 2345);
var socket = new Socket(remoteEndpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(remoteEndpoint);
socket.Send(new byte[] {1, 2, 3, 4});
Connection
Header gesetzt ist;)
HTTP-Verbindung
- Die HTTP-Verbindung ist ein Protokoll, das auf einem Socket ausgeführt wird.
- Die HTTP-Verbindung ist eine übergeordnete Abstraktion einer Netzwerkverbindung.
- Bei einer HTTP-Verbindung kümmert sich die Implementierung um all diese übergeordneten Details und sendet einfach eine HTTP-Anfrage (einige Header-Informationen) und empfängt eine HTTP-Antwort vom Server.
Socket-Verbindung
- Socket wird zum Transportieren von Daten zwischen Systemen verwendet. Es verbindet einfach zwei Systeme miteinander. Eine IP-Adresse ist die Adresse des Computers über ein IP-basiertes Netzwerk.
- Mit der Socket-Verbindung können Sie Ihr eigenes Protokoll für die Netzwerkverbindung zwischen zwei Systemen entwerfen.
- Bei der Socket-Verbindung müssen Sie sich um alle untergeordneten Details einer TCP / IP-Verbindung kümmern.
HTTP - Programmierung oder HTTP - Anforderung wird für lose Kopplung und verwendet plattformunabhängige Sprachtechnologie Kommunikation , bei der als Socket - Programmierung verwendet wird , in dem System hat Sprachspezifikation Protokoll
Damit zwei Endpunkte miteinander kommunizieren können, sollten beide einer Reihe von Regeln folgen. Im Computer werden diese Regeln als Protokoll bezeichnet.
Zum Beispiel sollten beide für einen Endpunkt wie einen Browser und für einen anderen wie einen Webserver eine Reihe von Regeln oder Protokollen mit dem Namen http befolgen, um Informationen kommunizieren und handeln zu können. Im World Wide Web und bei dieser Art der Kommunikation konnten nur diejenigen, die auf der Grundlage dieses http-Protokolls sprechen, erfolgreich miteinander sprechen.
Socket ist nur ein Endpunkt. Es könnte dem http-Protokoll folgen, um als Client, der eine Seite anfordert, eine Kommunikation in www zu erhalten, oder es könnte als Server fungieren, der Verbindungen abhört. oder vielleicht könnte es einem anderen Satz von Regeln oder Protokollen wie ssh, ftp folgen und auf andere Weise kommunizieren.
Jetzt können Sie in der Socket-Programmierung einen Socket erstellen, ihn an eine IP-Adresse und eine Portnummer binden, um als Portnummer zu fungieren, und ihn anweisen, http, ssh, ftp oder was auch immer Sie möchten, basierend auf der Kommunikation, die Sie verwenden möchten Steckdose für.