В чем разница между программированием сокетов и программированием Http? может кто-нибудь помочь, пожалуйста?
В чем разница между программированием сокетов и программированием Http? может кто-нибудь помочь, пожалуйста?
Ответы:
HTTP - это протокол приложения. По сути, это означает, что сам протокол HTTP не может использоваться для передачи информации в / из удаленной конечной точки. Вместо этого он полагается на базовый протокол, которым в случае HTTP является TCP.
Вы можете узнать больше об уровнях 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});
Connection
заголовок;)
HTTP-соединение
- HTTP-соединение - это протокол, работающий на сокете.
- HTTP-соединение - это абстракция сетевого соединения более высокого уровня.
- С HTTP-соединением реализация заботится обо всех этих высокоуровневых деталях и просто отправляет HTTP-запрос (некоторую информацию заголовка) и получает HTTP-ответ от сервера.
Подключение к розетке
- Socket используется для передачи данных между системами. Он просто соединяет две системы вместе, IP-адрес - это адрес машины в IP-сети.
- Используя сокетное соединение, вы можете разработать свой собственный протокол для сетевого соединения между двумя системами.
- При подключении через сокет вам необходимо позаботиться обо всех деталях нижнего уровня подключения TCP / IP.
HTTP-программирование или HTTP-запрос используется для слабой связи и платформенно-нейтральной языковой технологической связи, где как программирование сокетов используется, когда система имеет протокол спецификации языка
чтобы две конечные точки могли общаться друг с другом, они обе должны следовать набору правил. в компьютере этот набор правил называется протоколом.
например, для конечной точки, такой как браузер, и для другой, такой как веб-сервер, они оба должны следовать набору правил или протоколу, называемому http, чтобы иметь возможность общаться и обмениваться информацией. так что во всемирной паутине и при таком виде общения только те, кто общаются на основе этого протокола http, могут успешно общаться друг с другом.
сокет - это просто конечная точка. он может следовать протоколу http, чтобы войти в коммуникацию в www в качестве клиента, запрашивающего страницу, или он может действовать как сервер, прослушивающий соединения. или, может быть, он мог бы следовать другому набору правил или протоколов, таких как ssh, ftp, и взаимодействовать другими способами.
теперь в программировании сокетов вы можете создать сокет, привязать его к IP-адресу и номеру порта, чтобы он действовал как номер порта и сказал ему следовать http, ssh, ftp или как угодно, в зависимости от связи, которую вы хотите использовать. розетка для.