web-dev-qa-db-fra.com

différence entre la programmation de socket et la programmation Http

Quelle est la différence entre la programmation de socket et la programmation Http? Quelqu'un peut-il aider s'il vous plaît?

85
Innovative Thinker

HTTP est un protocole d'application. Cela signifie essentiellement que HTTP ne peut pas être utilisé pour transporter des informations vers/depuis un point de terminaison distant. Au lieu de cela, il s'appuie sur un protocole sous-jacent qui, dans le cas de HTTP, est TCP.

enter image description here

Vous pouvez en savoir plus sur les couches OSI si cela vous intéresse.

Les sockets, quant à eux, sont une API fournie par la plupart des systèmes d’exploitation pour pouvoir dialoguer avec le réseau. L'API de socket prend en charge différents protocoles à partir de la couche de transport et vers le bas.

Cela signifie que si vous souhaitez utiliser TCP, vous utilisez des sockets. Mais vous pouvez également utiliser des sockets pour communiquer en utilisant HTTP, mais vous devez ensuite décoder/coder les messages conformément à la spécification HTTP ( RFC2616 ). Comme cela peut être une tâche énorme pour la plupart des développeurs, nous avons également des clients prêts dans nos infrastructures de développement (telles que .NET), par exemple les classes WebClient ou HttpWebRequest.

89
jgauffin

Avec HTTP, vous utilisez un protocole HTTP de haut niveau (qui fonctionne sur une socket). C'est sans session, ce qui signifie que vous envoyez une demande de texte comme GET google.com et recevez en retour du texte ou des données binaires, après la fermeture de la connexion (dans HTTP 1.1, des connexions persistantes sont disponibles).

Exemple MSDN:

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

Avec les sockets, vous allez au niveau inférieur et contrôlez réellement la connexion et envoyez/recevez des octets bruts.

Exemple:

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

Connexion HTTP

  • La connexion HTTP est un protocole qui s'exécute sur un socket.
  • La connexion HTTP est une abstraction de niveau supérieur d'une connexion réseau.
  • Avec la connexion HTTP, l’implémentation prend en charge tous ces détails de niveau supérieur et envoie simplement une requête HTTP (quelques informations d’en-tête ) Et reçoit une réponse HTTP du serveur.

Socket Connection

  • Socket est utilisé pour transporter des données entre des systèmes. Il connecte simplement deux systèmes ensemble, une adresse IP est l’adresse du machine sur un réseau IP.
  • Avec la connexion par socket, vous pouvez concevoir votre propre protocole pour la connexion réseau entre deux systèmes.
  • Avec la connexion Socket, vous devez vous occuper de tous les détails de bas niveau d’une connexion TCP/IP.
6
Amit Yadav

La programmation HTTP ou la requête HTTP est utilisée pour le couplage lâche et la technologie de langage neutre par rapport à la plate-forme la communication où la programmation par socket est utilisée lorsque le système a le langage le protocole de spécification 

0
Mukund