Разница между программированием сокетов и программированием Http

В чем разница между программированием сокетов и программированием Http? может кто-нибудь помочь?

Ответ 1

HTTP - протокол приложения. В основном это означает, что сам HTTP не может использоваться для передачи информации в/из удаленной конечной точки. Вместо этого он опирается на базовый протокол, который по протоколу HTTP является TCP.

enter image description here

Если вы заинтересованы, вы можете больше узнать о уровнях OSI.

С другой стороны, сокеты - это API, который предоставляет большинство операционных систем, чтобы иметь возможность разговаривать с сетью. API-интерфейс сокета поддерживает различные протоколы из транспортного уровня и вниз.

Это означает, что если вы хотите использовать TCP, вы используете сокеты. Но вы также можете использовать сокеты для связи с использованием HTTP, но тогда вам нужно декодировать/кодировать сообщения в соответствии со спецификацией HTTP (RFC2616). Поскольку это может быть огромной задачей для большинства разработчиков, мы также получили готовых клиентов в наших инфраструктурах разработчиков (например,.NET), например классы WebClient или HttpWebRequest.

Ответ 2

В HTTP вы используете высокоуровневый HTTP-протокол (который работает поверх сокета). Это не зависит от сеанса, что означает, что вы отправляете текстовый запрос, например GET google.com, и получаете в ответ текстовые или двоичные данные, после чего соединение закрывается (в HTTP 1.1 постоянные соединения доступны)

Пример 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 ();
} 

С сокетами вы идете на уровень ниже и фактически контролируете соединение и отправляете/получаете необработанные байты.

Пример:

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

Ответ 3

HTTP-программирование или HTTP-запрос используются для слабого соединения и связи с платформой нейтральной языковой технологии, где, когда программирование сокетов используется там, где в протоколе спецификации язык

Ответ 4

HTTP-соединение

  • HTTP-соединение - это протокол, который выполняется в сокете.
  • HTTP-соединение - это абстракция сетевого соединения более высокого уровня.
  • С HTTP-соединением реализация заботится обо всех этих деталях более высокого уровня и просто отправляет HTTP-запрос (некоторый заголовок информации) и получать HTTP-ответ от сервера.

Соединение с разъемами

  • Socket используется для передачи данных между системами. Он просто соединяет две системы вместе, IP-адрес - это адрес машины через IP-сеть.
  • С подключением сокетов вы можете создать собственный протокол для сетевого соединения между двумя системами.
  • При подключении Socket вы должны заботиться обо всех деталях ниже уровня TCP/IP-соединения.