socket servidor que programacion por enviar ejemplos comando cliente archivos af_unix sockets network-programming

sockets - servidor - diferencia entre la programación de socket y la programación Http



socket tcp (4)

¿Cuál es la diferencia entre la programación de socket y la programación Http? ¿Alguien puede ayudar, por favor?


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 ocupa de todos estos detalles de nivel superior y simplemente envía una solicitud HTTP (parte de la información del encabezado) y recibe una respuesta HTTP del servidor.

Conexión de socket

  • Socket se usa para transportar datos entre sistemas. Simplemente conecta dos sistemas, 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 de socket, debe ocuparse de todos los detalles de nivel inferior de una conexión TCP / IP.

Con HTTP, utiliza el protocolo HTTP de alto nivel (que funciona sobre un socket). No requiere 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 la conexión se cierre (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, usted va al nivel más bajo y realmente controla la conexión y envía / recibe bytes sin formato.

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


La programación HTTP o la solicitud HTTP se utiliza para el acoplamiento flexible y la comunicación de tecnología de lenguaje neutral de plataforma donde se usa la programación de socket donde el sistema tiene un protocolo de especificación de idioma


HTTP es un protocolo de aplicación. Básicamente, significa que HTTP no se puede usar para transportar información hacia / desde un punto final remoto. En su lugar, se basa en un protocolo subyacente que en el caso de HTTP es TCP.

Puede leer más acerca de las capas OSI si está interesado.

Los sockets, por otro lado, son una API que proporcionan la mayoría de los sistemas operativos para poder hablar con la red. El socket API admite diferentes protocolos desde la capa de transporte y hacia abajo.

Eso significa que si desea usar TCP usa sockets. Pero también puede usar sockets para comunicarse utilizando HTTP, pero luego debe decodificar / codificar los mensajes de acuerdo con la especificación HTTP ( RFC2616 ). Dado que puede ser una gran tarea para la mayoría de los desarrolladores, también tenemos clientes listos en nuestros frameworks de desarrolladores (como .NET), por ejemplo, las clases WebClient o HttpWebRequest .