В чем разница между программированием сокетов и программированием Http? может кто-нибудь помочь?
Разница между программированием сокетов и программированием Http
Ответ 1
HTTP - протокол приложения. В основном это означает, что сам HTTP не может использоваться для передачи информации в/из удаленной конечной точки. Вместо этого он опирается на базовый протокол, который по протоколу HTTP является TCP.
Если вы заинтересованы, вы можете больше узнать о уровнях 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-соединения.