wake-up-neo.net

unterschied zwischen Socket-Programmierung und HTTP-Programmierung

Was ist der Unterschied zwischen Socket-Programmierung und HTTP-Programmierung? kann jemand bitte helfen

85

HTTP ist ein Anwendungsprotokoll. Im Grunde bedeutet dies, dass HTTP selbst nicht zum Transportieren von Informationen zu/von einem entfernten Endpunkt verwendet werden kann. Stattdessen stützt es sich auf ein zugrunde liegendes Protokoll, bei dem es sich bei HTTP um TCP handelt.

enter image description here

Sie können mehr über OSI-Layer lesen wenn Sie interessiert sind.

Sockets dagegen 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 Sockets jedoch auch für die Kommunikation über HTTP verwenden. Dann müssen Sie jedoch Nachrichten gemäß der HTTP-Spezifikation ( RFC2616 ) decodieren/codieren. Da dies für die meisten Entwickler eine große Aufgabe sein kann, haben wir in unseren Entwickler-Frameworks (wie .NET) auch fertige Clients, beispielsweise die WebClient- oder die HttpWebRequest-Klasse.

89
jgauffin

Mit HTTP verwenden Sie das High-Level-HTTP-Protokoll (das auf einem Socket funktioniert). Es ist sitzungsfrei, was bedeutet, dass Sie eine Textanforderung wie GET google.com senden und im Gegenzug Text oder binäre Daten erhalten, nachdem diese Verbindung geschlossen wurde (in HTTP 1.1 sind persistente 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 rohe Bytes.

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});
19
Anri

HTTP-Verbindung

  • Die HTTP-Verbindung ist ein Protokoll, das auf einem Socket ausgeführt wird.
  • Die HTTP-Verbindung ist eine Abstraktion einer Netzwerkverbindung auf höherer Ebene.
  • Bei einer HTTP-Verbindung kümmert sich die Implementierung um alle diese übergeordneten Details. Sie senden einfach eine HTTP-Anforderung (einige Header-Informationen) und empfangen die HTTP-Antwort vom Server.

Socket-Anschluss

  • Socket dient zum Transport von Daten zwischen Systemen. Es verbindet einfach zwei Systeme miteinander, eine IP-Adresse ist die Adresse des Maschine über ein IP-basiertes Netzwerk.
  • Mit Socket-Verbindung können Sie ein eigenes Protokoll für die Netzwerkverbindung zwischen zwei Systemen erstellen.
  • Bei der Socket-Verbindung müssen Sie sich um alle untergeordneten Details einer TCP/IP-Verbindung kümmern.
6
Amit Yadav

Die HTTP-Programmierung oder die HTTP-Anforderung wird für lose Kopplung und plattformneutrale Sprachtechnologie Kommunikation verwendet, bei der Socket-Programmierung verwendet wird, wenn das System Sprache Spezifikationsprotokoll hat 

0
Mukund