¿Cuál es la diferencia entre la programación de sockets y la programación Http? alguien puede ayudar por favor?
¿Cuál es la diferencia entre la programación de sockets y la programación Http? alguien puede ayudar por favor?
Respuestas:
HTTP es un protocolo de aplicación. Básicamente significa que HTTP en sí mismo no se puede usar para transportar información hacia / desde un punto final remoto. En cambio, se basa en un protocolo subyacente que en el caso de HTTP es TCP.
Puede leer más sobre las capas OSI si está interesado.
Los sockets, por otro lado, son una API que la mayoría de los sistemas operativos proporcionan para poder hablar con la red. La API de socket admite diferentes protocolos desde la capa de transporte y hacia abajo.
Eso significa que si desea utilizar TCP, utilice sockets. Pero también puede usar sockets para comunicarse usando HTTP, pero luego debe decodificar / codificar mensajes de acuerdo con la especificación HTTP ( RFC2616 ). Dado que eso puede ser una tarea enorme para la mayoría de los desarrolladores, también preparamos clientes en nuestros marcos de desarrollo (como .NET), por ejemplo, WebClient
las HttpWebRequest
clases o .
Con HTTP, usa el protocolo HTTP de alto nivel (que funciona sobre un socket). No tiene sesión, lo que significa que envía una solicitud de texto como GET google.com
y recibe texto o datos binarios a cambio, después de que se cierra la conexión (en HTTP 1.1, las conexiones persistentes están disponibles)
Ejemplo de 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 ();
}
Con los sockets, vas al nivel inferior y realmente controlas la conexión y envías / recibes bytes sin procesar.
Ejemplo:
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
esté configurado el encabezado;)
Conexión HTTP
- La conexión HTTP es un protocolo que se ejecuta en un socket.
- La conexión HTTP es una abstracción de nivel superior de una conexión de red.
- Con la conexión HTTP, la implementación se encarga de todos estos detalles de nivel superior y simplemente envía una solicitud HTTP (información de encabezado) y recibe una respuesta HTTP del servidor.
Conexión de enchufe
- Socket se utiliza para transportar datos entre sistemas. Simplemente conecta dos sistemas juntos, una dirección IP es la dirección de la máquina a través de una red basada en IP.
- Con la conexión de socket puede diseñar su propio protocolo para la conexión de red entre dos sistemas.
- Con la conexión Socket, debe cuidar todos los detalles de nivel inferior de una conexión TCP / IP.
La programación HTTP o la solicitud HTTP se utilizan para un acoplamiento flexible y una comunicación de tecnología de lenguaje de plataforma neutral donde se utiliza una programación de socket donde el sistema tiene un protocolo de especificación de lenguaje
para que dos puntos finales puedan comunicarse entre sí, ambos deben seguir un conjunto de reglas. en la computadora, este conjunto de reglas se llama protocolo.
por ejemplo, para un punto final como el navegador y para otro como un servidor web, ambos deben seguir un conjunto de reglas o protocolo llamado http para poder comunicarse e intercambiar información. por lo que en la World Wide Web y en este tipo de comunicaciones, solo aquellos que hablan en base a este protocolo http pueden comunicarse entre sí.
socket es solo un punto final. podría seguir el protocolo http para entrar en una comunicación en www como un cliente que solicita una página o podría actuar como un servidor que escucha las conexiones. o tal vez podría seguir otro conjunto de reglas o protocolos como ssh, ftp y comunicarse de otras formas.
ahora, en la programación de sockets, puede hacer un socket, vincularlo a una dirección IP y un número de puerto para que actúe como un número de puerto y decirle que siga http, ssh, ftp o lo que desee en función de las comunicaciones que desee utilizar su enchufe para.