différence entre la programmation socket et la programmation Http

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

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

entrer la description de l'image ici

Vous pouvez en savoir plus sur les couches OSI si vous êtes intéressé.

Les sockets, par contre, sont une API que la plupart des systèmes d’exploitation fournissent pour pouvoir communiquer avec le réseau. L’API de socket prend en charge différents protocoles depuis 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 via HTTP, mais vous devez ensuite décoder / encoder les messages conformément à la spécification HTTP ( RFC2616 ). Étant donné que cela peut être une tâche énorme pour la plupart des développeurs, nous avons également des clients prêts dans nos frameworks de développement (comme .NET), par exemple les classes WebClient ou HttpWebRequest .

Avec HTTP, vous utilisez un protocole HTTP de haut niveau (qui fonctionne sur un socket). Il s’agit d’une session sans session, ce qui signifie que vous envoyez une demande de texte comme GET google.com et recevez du texte ou des données binarys en retour, une fois la connexion fermée (dans HTTP 1.1, des connexions persistantes sont disponibles).

Exemple MSDN:

 public static void Main (ssortingng[] 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 passez 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}); 

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 (certaines informations d’en-tête) et reçoit une réponse HTTP du serveur.

Connexion Socket

  • Socket est utilisé pour transporter des données entre systèmes. Il connecte simplement deux systèmes ensemble, une adresse IP est l’adresse de la machine via 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 niveau inférieur d’une connexion TCP / IP.

La programmation HTTP ou la requête HTTP est utilisée pour une communication de technologie langagière faiblement couplée et indépendante de la plate-forme lorsque la programmation par socket est utilisée lorsque le système a un protocole de spécification de langage