134 votes

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

Quelle est la différence entre la programmation par socket et la programmation Http ? Quelqu'un peut-il m'aider ?

125voto

jgauffin Points 51913

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 final distant. Il s'appuie plutôt sur un protocole sous-jacent qui, dans le cas de HTTP, est le TCP.

enter image description here

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

D'autre part, les sockets sont une API que la plupart des systèmes d'exploitation fournissent pour pouvoir communiquer avec le réseau. L'API des sockets prend en charge différents protocoles depuis la couche de transport jusqu'en bas.

Cela signifie que si vous souhaitez utiliser TCP, vous utilisez des sockets. Mais vous pouvez également utiliser les sockets pour communiquer par HTTP, mais vous devez alors décoder/encoder les messages conformément à la spécification HTTP ( RFC2616 ). Comme cela peut représenter une tâche énorme pour la plupart des développeurs, nous avons également prévu des clients prêts à l'emploi dans nos cadres de développement (comme .NET). WebClient ou le HttpWebRequest classes.

31voto

Anri Points 3545

Avec HTTP, vous utilisez le protocole HTTP de haut niveau (qui fonctionne au-dessus d'une socket). Il n'y a pas de session, ce qui signifie que vous envoyez une requête textuelle du type GET google.com et recevoir des données textuelles ou binaires en retour, après quoi la connexion est fermée (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 descendez d'un niveau et contrôlez réellement la connexion et envoyez/reçoit 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});

21voto

Amit Yadav Points 1112

Connexion HTTP

  • La connexion HTTP est un protocole qui fonctionne sur un socket.
  • La connexion HTTP est une abstraction de plus haut niveau d'une connexion réseau.
  • Avec la connexion HTTP, l'implémentation se charge de tous ces détails de haut niveau et envoie simplement une requête HTTP (certains en-têtes ) et de recevoir une réponse HTTP du serveur.

Connexion de la prise

  • Le socket est utilisé pour transporter des données entre les systèmes. Il connecte simplement deux systèmes ensemble, une adresse IP est l'adresse de la machine sur un réseau basé sur IP. machine sur un réseau basé sur 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.

3voto

Mgh Gh Points 41

Pour que deux points d'extrémité puissent communiquer entre eux, ils doivent tous deux suivre un ensemble de règles. en informatique, cet ensemble de règles est appelé protocole.

par exemple, pour un point d'extrémité comme un navigateur et pour un autre comme un serveur web, ils doivent tous deux suivre un ensemble de règles ou un protocole appelé http pour pouvoir communiquer et échanger des informations. ainsi, dans le world wide web et ce type de communications, seuls ceux qui parlent sur la base de ce protocole http peuvent communiquer entre eux avec succès.

Le socket n'est qu'un point de terminaison. il peut suivre le protocole http pour entrer en communication dans www en tant que client demandant une page ou il peut agir comme un serveur écoutant les connexions. ou peut-être qu'il peut suivre un autre ensemble de règles ou de protocoles comme ssh, ftp et communiquer d'autres façons.

Maintenant, en programmation de socket, vous pouvez créer un socket, le lier à une adresse IP et à un numéro de port pour agir comme un numéro de port et lui dire de suivre http, ssh, ftp ou ce que vous voulez en fonction des communications pour lesquelles vous voulez utiliser votre socket.

1voto

Mukund Points 1

La programmation HTTP ou la requête HTTP est utilisée pour un couplage souple et technologie linguistique indépendante de la plate-forme communication, alors que la programmation par socket est utilisée lorsque le système a langue protocole de spécification

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X