Quelle est la différence entre la programmation de socket et la programmation Http? Quelqu'un peut-il aider s'il vous plaît?
Quelle est la différence entre la programmation de socket et la programmation Http? Quelqu'un peut-il aider s'il vous plaît?
Réponses:
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. Au lieu de cela, il repose sur un protocole sous-jacent qui dans le cas de HTTP est TCP.
Vous pouvez en savoir plus sur les couches OSI si vous êtes intéressé.
Les sockets, quant à eux, sont une API fournie par la plupart des systèmes d'exploitation pour pouvoir communiquer avec le réseau. L'API 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 en utilisant HTTP, mais vous devez ensuite décoder / encoder les messages selon la spécification HTTP ( RFC2616 ). Comme cela peut être une tâche énorme pour la plupart des développeurs, nous avons également préparé des clients dans nos frameworks de développement (comme .NET), par exemple WebClient
les HttpWebRequest
classes ou .
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 du texte ou des données binaires en retour, une fois la connexion fermée (dans HTTP 1.1, les 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});
Connection
tête est défini;)
Connexion HTTP
- La connexion HTTP est un protocole qui s'exécute sur une 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 de prise
- 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 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 un couplage lâche et une communication de technologie de langage indépendante de la plate-forme où la programmation de socket est utilisée lorsque le système a un protocole de spécification de langage
pour que deux terminaux puissent se parler, ils doivent tous deux suivre un ensemble de règles. en informatique, cet ensemble de règles est appelé protocole.
par exemple, pour un terminal 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 pourraient réussir à se parler.
socket n'est qu'un point de terminaison. il pourrait suivre le protocole http pour entrer dans une communication dans www en tant que client demandant une page ou il pourrait agir comme un serveur écoutant les connexions. ou peut-être qu'il pourrait suivre un autre ensemble de règles ou de protocoles comme ssh, ftp et communiquer par d'autres moyens.
maintenant dans la programmation de socket, vous pouvez créer une socket, la 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 tout ce que vous voulez en fonction des communications que vous souhaitez utiliser votre socket pour.