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


в чем разница между программированием сокетов и программирования http? кто-нибудь может помочь, пожалуйста?

4 77

4 ответа:

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

enter image description here

Вы можете прочитать больше о слои OSI если вы заинтересованы.

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

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

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

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

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

Разъем

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

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